[Git] 常用指令整理

簡單整理下常用的Git指令.

git clone <url> #複製版本庫
git clone <url> <repo_name> #複製版本庫,並將資料夾命名為repo_name

git init #初始化新版本庫,目錄中生成一個.git資料夾
git init --bare #創建一個無本地分支的庫,當需要一個公共的中央庫時,初始化為bare

git status #當前Git狀態

git add <file list> #將檔加入跟蹤或者將修改後的檔放入暫存區(staging area)
git add -u #只增加修改過的檔,新增的檔不加入
git add -i #進入互動模式
git rm <file> #git刪除檔
git mv <old_file> <new_file> #git重命名檔
git checkout HEAD <file list> 或者 git checkout -- <file list> #撤銷指定檔列表尚未暫存的修改
git checkout HEAD . #撤銷所有尚未暫存的修改
git checkout <版本號> . #將所有檔都恢復到指定版本號所在的狀態
git reset HEAD 或者 git reset HEAD <file list> #撤銷指定檔列表尚未提交的修改
git reset <版本號> #撤銷指定版本號之後的所有提交

git commit #提交當前暫存區的修改
git commit -m '<message>' #輸入提交資訊,跳過檔編輯message階段
git commit -a #直接提交所有修改的檔,跳過暫存階段,但新增加的檔還需要先add
git commit -v #提示當前commit的修改記錄
git commit --amend #修改最後一次提交的message

git diff #顯示當前位置與暫存區的差異
git diff --cached #顯示已經暫存的檔和上次提交時的快照之間的差異
git diff <file> #顯示file檔還沒有暫存起來的變化內容
git diff --cahced <file> #顯示已經暫存的file檔和上次提交時的快照之間的差異
git diff <前版本號>..<後版本號> #比較兩個版本號之間的差異
git diff <前版本號>..<後版本號> <file> #比較指定檔在兩個版本號之間的差異

git log #歷史記錄
git log <file> #查看file的所有log
git log <directory> #查看directory目錄的所有log
git log -p #詳細日誌,包括檔變動明細
 
git blame <file> #關於file的所有commit記錄

git show <版本號> #查看指定版本號的提交內容
git show <tag> #查看指定tag的提交內容
git show <tag>:<file> #查看指定tag中file檔的修改內容
git show HEAD #查看此版本提交的內容
git show HEAD^ #查看上一版本(父版本)提交的內容
git show HEAD^^ #查看(祖父版本)提交的內容
git show HEAD~4 #查看第四個祖先提交的內容

git stash #丟進暫存區
git stash list #列出所有暫存區的資料
git stash pop #取出最新的一次暫存的資料, 並從暫存區移除
git stash apply #取出最新的一次暫存的資料, 但不從暫存區移除
git stash clear #清理stash 

git remote #顯示遠端倉庫名稱
git remote -v #顯示遠端倉庫名稱和位址
git remote show #同git remote
git remote show <remote> #查看名為remote的遠程倉庫
git remote add <remote> <remote_url> #添加遠程庫的別名
git remote rm <remote> #刪除遠端庫和相關分支

git pull #獲取併合並到當前本地分支
git pull <remote> <branch> #獲取remote庫branch分支,併合並到本地的branch分支
git pull <remote> <remote_branch>:<local_branch> #提取遠程的remote_branch,並更新到local_branch

git push <remote> <branch> #提取本地的branch分支,並更新到遠端倉庫的branch分支
git push <remote> <local_branch>:<remote_branch> #提取本地的local_branch分支,並更新到遠端倉庫的分支remote_branch,如果remote_branch不存在,則在遠端倉庫新建remote_branch分支
git push <remote> :<remote_branch> #刪除遠端分支remote_branch

git checkout -b <local_branch> <remote>/<remote_branch> #在本地新建local_branch分支,用來跟蹤遠端的remote_branch分支
git checkout --track <remote>/<branch> #在本地新建branch分支,用來跟蹤遠端的branch分支(git1.6.2之後)

git branch #列出本地分支
git branch -r #列出遠端分支
git branch -a #列出所有分支
git branch -v #每個分支最後的提交
git branch <branch> #基於當前分支的末梢創建新分支
git branch <branch> <提交、分支或標籤> #基於某次提交、分支或標籤創建新分支,用來查