天天看點

常用的git指令一網打盡

# 檢視狀态

git status

git log

# 建立分支

git branch <分支名>

# 建立并切換分支

git checkout -b <分支名>

# 送出代碼

git commit -m "備注内容"

# 切換分支

git checkout <分支名>

git switch <分支名>  //git 2.23版本引入

# 合并分支  

git merge  <分支名>  // 把其他分支合并到自己身上來

git rebase <分支名>  // 把自己合并到主分支前面去-讓代碼的開發路線更清晰,讓并行開發看起來像是順序開發

# 分離HEAD  HEAD的原理

HEAD--幫助我們在送出樹上進行移動

可以利用checkout指令, 讓HEAD指針指向某個具體的送出記錄(比如C3,C4,C5)而不是分支名(main,bugFix)

# git 的相對引用:

^ 向上移動1個送出記錄  ^ 還有上一代的意思,一個^就是往上1代

git checkout main^ 切換到main的父節點

~<num> 向上移動多個送出記錄

^和~的使用,支援鍊式操作

 -f:強制讓指針指向某一個具體的送出

git branch -f main HEAD~3   

git branch -f bugFix C1    //讓bugFix指向C1節點

# 撤銷變更

git reset HEAD~1  //對遠端分支無效

git revert HEAD  

# cherry-pick可以将送出樹上任何的送出記錄追加到目前所在位置(HEAD)上

# 适用場景: 送出記錄号和哈希值已知

git cherry-pick  <送出号>

# 互動式 rebase

互動式rebase 指的是使用帶參數 --interactive的rebase指令 簡寫為 -i

git rebase -i HEAD~4

# git tag

git tag <标簽号> <送出号>

git tag v0 c1

# 描述離自己最近的錨點

git describe <ref>  // ref可以是任何能被git識别成送出記錄的引用

//如果你沒有指定的話,Git 會以你目前所檢出的位置(HEAD)。

它輸出的結果是這樣的:

<tag>_<numCommits>_g<hash>

tag 表示的是離 ref 最近的标簽, numCommits 是表示這個 ref 與 tag 相差有多少個送出記錄, hash 表示的是你所給定的 ref 所表示的送出記錄哈希值的前幾位。

當 ref 送出記錄上有某個标簽時,則隻輸出标簽名稱

# 查找産生Bug的送出記錄

git bisect 

# 兩個父節點之間的切換

git checkout HEAD^2  //切換到另一個父節點

# git 遠端倉庫

git clone

# 遠端分支

命名規範: <remote name>/<branch name> 一般遠端倉庫的名稱預設為origin

# 從遠端倉庫下載下傳記錄

git fetch

從遠端倉庫下載下傳本地倉庫中缺失的送出記錄

更新遠端分支指針

不會改變本地倉庫的狀态,也不會更新main分支

# 合并遠端分支

git cherry-pick origin/main

git rebase origin/main

git merge origin/main

# 從遠端倉庫下載下傳并合并分支

# pull操作時, 送出記錄會被先下載下傳到origin/main 分支上,再合并到本地的main分支

git pull

git pull --rebase  //重要,送出代碼前一定要先做這一步

# 推送本地記錄到遠端倉庫

# push操作時,我們把工作從main推到遠端倉庫中的main分支,同時更新遠端分支origin/main

git push

git push <remote> <place>  //git push origin main

git push origin <source>:<destination>  //git push origin foo^:main

# 偏離的送出曆史

git 會強制你先合并遠端最新的代碼,再分享你的工作

git pull --rebase  //下載下傳遠端代碼并合并

git push  //再将自己的代碼推送到遠端分支

# 如何自定義遠端分支

# 方法一

git checkout -b <期望能夠跟蹤origin/main分支的本地分支> o/main

# 方法二

git branch -u o/main <本地分支名>

# git 遠端倉庫進階操作

# 推送主分支

# 合并遠端倉庫

# 遠端追蹤

# git push 的參數

git push <remote> <place>  //git push origin main

git push origin <source>:<destination>  //git push origin foo^:main

# git fetch 的參數

git fetch <remote> <place> //git fetch origin foo //把遠端倉庫foo分支下載下傳到本地的origin/foo分支上

git fetch <source>:<destination>  //source指的是遠端倉庫的位置,destination是要放置送出的本地倉庫的位置

#  沒有source的source

git push origin :side  //遠端倉庫和本地倉庫中的side分支會被删除

git fetch origin :bugFix  //本地會建立一個新分支bugFix 

# git pull的參數  git pull 實際上就是 fetch + merge 的縮寫

git pull origin <source>:<destination>

########################草稿區############################

# 幫助指令

show solution  #檢視參考答案

git fakeTeamwork   #模拟團隊合作