Git命令行基本操作

  1. 安裝Git
    網上有很多Git安裝教程,如果需要圖形界面,windows下建議使用TortoiseGit,linux建議使用Git GUI或者GITK。

  2. Git基本配置
    git config可以配置git的參數,可以使用git config --list查看已經配置的git參數。其中有三個級別的保存位置,--system、--global、--local,分別表示所有用戶(本系統)、當前用戶(全局)、本地配置(當前目錄),默認使用--local。

配置用戶名及郵箱
在使用Git提交前,必須配置用戶名和郵箱,這些信息會永久保存到歷史記錄中。

git config --global user.name "Tocy"
git config --global user.email zyvj@qq.com
其他配置
如果在windows下建議還是配置下默認文本編輯器core.editor和差異分析工具merge.tool。

  1. 創建Git倉庫
    可以直接調用git init初始化當前目錄,即創建Git倉庫。

  2. 獲得Git倉庫
    如果需要克隆遠程倉庫,可以使用git clone,比如:

git clone https://git.oschina.net/Tocy/SampleCode.git

  1. 提交更新
    在windows下的Git GUI中,提交很簡單,右鍵-TortoiseGit-Commit。那么命令行下需要怎么處理?
    Git中每個文件都有三種狀態:committed、staged、modified。它們之間關系如下:

commit <-- stage <-- modify
commit --> --- --modify

我們獲取的Git倉庫中的所有文件都是committed狀態,如果你在本地修改了文件a,a的狀態就變成modified的;如果使用git add a,a的狀態變成staged;如果使用git commit,a的狀態就變成commited。這種狀態變化也說明復制代碼是很方便的,但是提交更新請慎重。
當然還有一種文件狀態,未跟蹤狀態(unversioned/untracked),通過使用git add可以把未跟蹤狀態變更為staged;通過git rm可以將staged或者committed狀態變為未跟蹤狀態。

git status
通常提交前先檢查下修改了什么內容,當前Git目錄下各文件的狀態。

$ git status
On branch master

Initial commit

Untracked files:
(use "git add <file>..." to include in what will be committed)

    Readme.md

nothing added to commit but untracked files present (use "git add" to track)
git add
git add可以添加文件或者目錄,也可以使用通配符。比如:

git add Readme.md # add file only
git add *.cpp # add all cpp files
git add /home/code/ # add all files in /home/code
git diff
git diff可以查看當前目錄的所有修改。
提交之前,還是單獨確認下處于staged狀態的文件有哪些,并保證修改正確。在實際應用中,可能還需要使用git diff導出PATCH做代碼走讀。
可以使用git diff --staged或git diff --cached查看staged與上次提交快照之間的區別。

git commit
提交前需慎重。直接調用git commit會彈出編輯器,輸入提交日志(如果是多行日志,建議使用)。
針對單行日志提交的情況,可以使用如下命令:git commit -m "add readme"。
還有一種快捷的提交方式,直接跳過stage緩存區,直接提交當前目錄下的所有修改git commit -a(使用這個命令前建議確認下當前目錄的修改是否正確、必須)。

git rm
git rm會把文件從當前目錄刪除(不會保存刪除的文件)。如果需要從Git倉庫中刪除,但保留在當前工作目錄中,亦即從跟蹤清單中刪除,可以使用git rm --cached readme.md。

  1. 提交歷史查看
    可以使用git log查看當前工程的所有提交的日志。

git log --stat # 僅顯示摘要選項
git log --pretty=oneline # 定制記錄格式
git log --graph # 圖像化分支和版本更新

  1. 撤銷更新
  2. 遠程倉庫
    可以使用git remote查看當前的遠程庫。
    git remote -v可以顯示對應的克隆地址。(對于多個遠程倉庫很有用)

添加遠程倉庫
git remote add [short_name] [url]可以添加新的遠程倉庫。

從遠程倉庫抓取數據
git fetch [remote-name]可以從遠程倉庫抓取數據到本地。
也可以使用git pull

推送數據到遠程倉庫
git push [remote_name] [branch_name]
默認使用origin和master。

查看遠程倉庫信息
git remote show origin

遠程倉庫的刪除和重命名
git remote rename [old_name] [new_name]
git remote rm [remote_name]

  1. 打Tags
    可使用git tag顯示當前庫中的標簽。

添加標簽(含附注)
git tag -a v0.1 -m "my version 0.1"
使用如下命令查看Tag日志信息(指定對應標簽的名字)
git show v0.1
也可使用SHA-1的提交表示創建tag:
git tag -a v0.2 [SHA-1] -m "my version 0.2"

分享標簽
默認的,git push不會推送標簽信息到遠程倉庫,需要通過命令顯式推送。
git push origin v0.1
如果需要推送所有標簽,使用
git push origin --tags

  1. Git分支
    git分支是輕量級的,速度很快,僅記錄索引信息。

顯示所有分支
使用git branch可顯示當前所有分支。
可以使用--merged和--no-merged查看已經合并、未合并的分支。

創建及切換分支
可以使用下面命令直接切換并創建分支
git checkout -b testing
等價于

git branch testing # 創建testing 分支 git checkout testing # 切換到testing分支
注意切換分支時請保持工作目錄沒有未提交的修改。Git鼓勵使用分支,處理完問題之后合并分支即可。

分支合并
將hotfix分支合并到master(主分支)上,需要通過下面命令:

git checkout master git merge hotfix
合并之后可以使用git branch -d hotfix刪除分支。
如果合并時存在沖突,需要手工修改。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 查看、添加、提交、刪除、找回,重置修改文件 git help # 顯示command的help git sho...
    Swiftor閱讀 2,139評論 0 2
  • Add & Commit git init 初始化一個 Git 倉庫(repository),即把當前所在目錄變成...
    冬絮閱讀 4,908評論 0 9
  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,721評論 9 163
  • 1. GIT命令 git init在本地新建一個repo,進入一個項目目錄,執行git init,會初始化一個re...
    江邊一蓑煙閱讀 826評論 0 0
  • git 使用筆記 git原理: 文件(blob)對象,樹(tree)對象,提交(commit)對象 tree對象 ...
    神刀閱讀 3,798評論 0 10