git高階命令學習記錄

張濤5250發表於2020-11-02

重寫commit歷史


將提交應用到最後一次commit中

git commit --amend -m "更新說明"[ 有時候做了一個小的更改,不想單獨弄出來一個commit,那就可以使用此命令,直接將當前這一次commit與上一次commit合併生成一個新的commit ]

整理本地的commit(未push的commit)

git rebase -i HEAD~3[其中 -i表示啟用互動模式,~3表示最近的三次commit ]

執行過上述命令之後會出現如下所示的內容,要保證第一個是pick,即採用這一次commit的內容,最終會把這三次的合併成一個commit,包含三次提交的所有內容,詳細介紹請參照官網,或者閱讀下方的說明,這裡僅做一次命令的記錄,
pick表示使用本次commit,squash或者s表示不使用本次提交

   pick f7f3f6d changed my name a bit
   pick 310154e updated README formatting and added blame
   pick a5f4a0d added cat-file

   # Rebase 710f0f8..a5f4a0d onto 710f0f8
   #
   # Commands:
   #  p, pick = use commit
   #  r, reword = use commit, but edit the commit message
   #  e, edit = use commit, but stop for amending
   #  s, squash = use commit, but meld into previous commit
   #  f, fixup = like "squash", but discard this commit's log message
   #  x, exec = run command (the rest of the line) using shell
   #
   # These lines can be re-ordered; they are executed from top to bottom.
   #
   # If you remove a line here THAT COMMIT WILL BE LOST.
   #
   # However, if you remove everything, the rebase will be aborted.
   #
   # Note that empty commits are commented out

經過整理之後,儲存並推出編輯模式,會彈出合併後的提示資訊,再儲存推出,就會將所有的commit合併成一個或多個commit,可以通過 git log檢視整理後的commit

注:如果這些commit已經push到伺服器中,則強烈建議不要手賤,除非不怕被隊友打死。

除錯功能


git bisect start[開始進行除錯]

git bisect bad[告訴git當前commit是bad,即出問題的commit]

git bisect good [commitid][在告訴git哪一個commit是good,即在哪一個commit上程式碼是正常的,然後git就會在當前的commit和good commit之間進行二分查詢,git會根據二分查詢法先切換到一個commit-a上,本地進行除錯驗證,並將驗證結果告訴git,即git bisect good/bad,告訴git當前的commit-a是好的或者壞的,標記完之後,git會繼續根據二分查詢法切換到另一個commit上,依次類推,最終git會找出第一次出現錯誤的commit,然後我們就可以定位出現問題的commit,並進行相應的錯誤檢查]

git bisect reset[除錯完畢之後,在執行一遍此命令,會將你帶回到正常的狀態,否則會停留在一個奇怪的分支中]

GIT遠端分支


git push origin [本地分支名稱]:[遠端分支名稱][將本地的指定分支推送到遠端倉庫origin上作為遠端分支,如果遠端分支已存在則會自動合併,如果不存在,則會在遠端建立一個遠端分支]

git pull origin [遠端分支]:[本地分支][將遠端倉庫中指定分支的內容拉取到本地的指定分支上]

git push origin --delete [遠端分支][刪除指定的遠端分支]

git checkout --track origin/serverfix[以指定的遠端分支為基礎在本地建立一個與遠端分支同名的分支]

git checkout -b sf origin/serverfix[以指定的遠端分支為基礎在本地建立一個分支(可以自己指定一個與遠端分支不同的名稱)]

git branch -u origin/serverfix[將當前分支與指定分支建立追蹤關係]

相關文章