天天看點

[Git]git的一些常用操作筆記

復原到某次曆史送出:

git log:檢視分支送出曆史,确認需要回退的版本

git reset --hard commit_id:進行版本回退

git push --force origin:推送至遠端分支

合并送出記錄:

git log:檢視分支送出曆史,确認需要開始合并的最初版本,應選取最初版本的前一個版本

git rebase -i commit_id:進入版本合并vim編輯模式,大概如下:

pick acf6d24 優化
pick 0353373 增加邏輯
pick 1234567 增加其他功能

# Rebase 2169bc5..0353373 onto 2169bc5 (2 commands)
#
# 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
# d, drop = remove commit
           

将第二行的pick改為s或者squash,意思是把“優化”和“增加邏輯”兩次送出記錄合并成一次,而“增加其他功能”保留原有送出記錄,

然後輸入:wq儲存,然後會到修改送出注釋的界面,不改的話直接:q退出,否則修改後:wq儲存退出

git log:确認送出記錄是否正确修改

git push --force origin:推送至遠端分支

修改送出記錄注釋:

git log:檢視分支送出曆史,确認需要開始合并的最初版本,應選取最初版本的前一個版本

git rebase -i commit_id:進入版本合并vim編輯模式,大概如下:

pick acf6d24 優化
pick 0353373 增加邏輯
pick 1234567 增加其他功能
           

将要修改的那行的pick改成reword,輸入:wq儲存退出,然後會到修改送出注釋的界面,修改注釋後:wq儲存退出

git log:确認送出記錄是否正确修改

git push --force origin:推送至遠端分支

剔除某次送出:

比如在master分支,有以下送出曆史:

42eae13 (HEAD -> master) 第四次修改

97ea0f9 第三次修改

e50b7c2 第二次修改

3a52650 第一次修改

如果發現第三次修改有錯誤,想要剔除第三次修改,卻要保留第四次修改呢?

這個時候就可以用revert指令:

git revert -n 97ea0f9

git commit -m "恢複第三次修改"

Git送出曆史會變成:

33b8b30 (HEAD -> master) Revert "恢複第三次修改"

42eae13 第四次修改

97ea0f9 第三次修改

e50b7c2 第二次修改

3a52650 第一次修改

實際上,Git把第三次修改從送出中剔除(還原)了,還保留了第四次修改,并且産生了新的commit_id

如果要檢視完整的送出記錄,可以用指令:

git reflog

git