本文記錄了一些常用 Git 命令列操作的具體使用方式
git clone REPOSITORY_URL
拉取倉庫,並使用倉庫名作為本地檔名
git clone REPOSITORY_URL FOLDER
拉取倉庫,並使用 FOLDER 作為本地檔名
git fetch origin
更新所有遠端分支
git fetch origin BRACH
更新指定遠端分支
git pull origin
相當於 fetch
+ merge
對應的上游分支
git pull origin BRACH
拉取指定分支到當前分支
git pull origin --rebase master
讓本地分支重新基於遠端的 master 分支
git push origin
把分支推到遠端對應的上游分支
git push origin BRANCH
把分支推到遠端對應的分支
git push --set-upstream origin BRANCH
把分支推到遠端對應的分支,並將其設為上游分支(一般第一次提交自己的開發分支需要用到)
git push -f origin
把分支強推到遠端對應的上游分支(會覆蓋遠端分支,需要慎用)
git push origin -d BRANCH
刪除遠端分支
git branch
列出本地所有分支
git branch -a
列出本地和遠端分支
git branch -m NEW_BRANCH
更新當前分支名
git branch -d BRANCH
刪除已合併的分支
git branch -D BRANCH
強制刪除分支(即使未合併)
git checkout BRANCH
切到對應分支
git checkout -b NEW_BRANCH
建立新分支
git checkout -b NEW_BRANCH BRANCH
基於 BRANCH 建立新分支
git checkout SHA-1
切換到某個提交,也可以用 HEAD~N(N 為 1, 2, 3…)切到上 N 個提交
git checkout SHA-1 /PATH/TO/FILE
把檔案還原到相應的提交版本
git checkout —-theirs /PATH/TO/FILE
有衝突時使用對方的檔案版本
git checkout --ours /PATH/TO/FILE
有衝突時使用自己的檔案版本
git checkout -
切換到之前的分支,適合在兩個分支頻繁切換時使用
git add .
把所有增加/修改/刪除的檔案標識為要提交
git add /PATH/TO/FILE
只把單一檔案標識為要提交,當有其他不需要提交的檔案被修改時可使用
git commit
把 git add
標識的檔案進行提交
git commit -a
把修改/刪除的檔案進行提交(如果有新增的檔案,需要使用 git add
新增)
git commit -am "MESSAGE"
把修改/刪除的檔案進行提交併指定註釋(適用於臨時或簡單註釋內容)
git commit --amend
更新上一次提交,可以加上 -a
或在之前執行 git add
追加更新檔案
git commit --amend --reset-author
預設的更新提交是不改變作者的,如果需要改變可以明確設定
git cherry-pick SHA-1
git status
git diff
當前所有修改到的,沒被標識為要提交的檔案的更新內容
git diff --cache
當前所有修改到的,並被標識為要提交的檔案的更新內容
git diff /PATH/TO/FILE
指定檔案的更新內容,同樣可以用 --cache
區分
git log
詳細顯示所有記錄
git log -n 10
顯示最近 10 條記錄
git log --oneline
簡要顯示所有記錄
git log --oneline master ^BRANCH | wc -l
可以計算 BRANCH 和 master 分支相差多少個提交
git stash
暫存修改/刪除,或已標識為要 commit 的新增的檔案
git stash -u
暫存修改/刪除/新增的檔案,即新增檔案可以不用 git add
git stash pop
把暫存的檔案重新放出來
git revert SHA-1
通過形成一個新提交取消某個提交
git revert SHA-1 -m 1
如果是合併節點,需要指定要取消提交對應的父節點
例如合併是把 BRANCH_2 合併到 BRANCH_1,那麼要在 BRANCH_1 取消這次合併,就應該指定 m 為 1(大多數情況都是這樣)
git reset
取消對要 commit 的檔案的標識(相當於 git add
的復原)
git reset --hard
取消修改/刪除或已標識為要 commit 的新增的檔案的更新
git reset SHA-1
取消從 SHA-1 之後的所有提交,但是保留提交檔案的更新
如果只想取消上一次提交,SHA-1 可以設為 HEAD^
git reset --hard SHA-1
取消從 SHA-1 之後的所有提交,而且不保留提交檔案的更新
git rebase BRANCH
讓當前分支重新基於 BRANCH
git rebase -i SHA-1
更新 SHA-1 以後的提交,可以 pick/p
,edit/e
,drop/d
,squash/s
相應提交
如果第一個提交使用 p
,後面的提交使用 s
,可以把多個提交合併成一個提交
git merge BRANCH
把 BRANCH 合併到當前分支,儘量不形成合並節點
git merge --no-ff BRANCH
把 BRANCH 合併到當前分支,並確保形成合並節點
git merge --squash BRANCH
把 BRANCH 和當前分支的變更作為標識為要提交的內容,需要執行 git commit 完成只有一個提交的合併
git update-index --assume-unchanged /PATH/TO/FILE
當某個檔案被臨時修改,但不想提交,也不適合放到 .gitignore,可以用此命令讓 git 不將其識別為已修改
如果這個檔案是新增的,就不能用這個命令了,不過可以把檔案路徑加到 .git/info/exclude
git update-index --no-assume-unchanged /PATH/TO/FILE
恢復以上檔案的修改識別