Git修改已經被覆蓋的提交

2021-08-11 08:19:19 字數 2339 閱讀 5703

本文摘選自文章:【jitwxs】git教程 或【csdn】git教程

如果你不想看詳細的描述,直接看步驟即可:

1.git rebase -i head~n,將要修改的提交狀態改為edit

2.修改檔案

3.git add

4.git commit --amend

5.git rebase --continue

假設我們目錄下有三個檔案,分別是digit.datletter.datsymbol.datdigit.dat中存放著數字,letter.dat中存放著字母,symbol.dat中存放著符號。

我們先提交digit.dat,然後提交letter.dat,最後提交symbol.dat:

此時我們想起來,letter.dat中僅僅存放了小寫字母,大寫字母被遺忘了,我們要把大寫字母補充進去。這時候有兩種解決方法:

我們不討論發起新提交的情況,僅僅討論如何對那次提交做修改。你也許會說,這很簡單啊,直接使用命令reset head^或者reset 8cc5dc不就好了嗎?

不錯,這沒有問題,但是這樣的話我們對symbol.dat的那次提交也被撤回了,這顯然是乙個笨方法,特別是當你要修改的那次提交被覆蓋的很深的情況下。

有沒有在不影響其他的提交的情況下,對已經被覆蓋的提交做修改的方法呢?答案是有的。

step1 :git rebase -i head~n

我們使用命令git rebase -i head~2列出最新的兩次提交:

git rebased命令的互動命令中,首先逆序存放了我們最新的兩次提交,最前面的狀態為pick。下面也提示了我們可以執行哪些命令,這裡我們這裡只使用它的edit功能。

將我們要修改的那次提交狀態改為edite,也就是將第一行內容改為:

edit 8cc5dcb add letter.dat

然後儲存退出:

git已經提示我們此時已經暫停在了8cc5dc這一次提交上,後面新的提交此時應該被隱藏掉了,檢視日誌驗證我們的判斷:

不出所料,新增symbol.dat的那次提交已經被隱藏掉了,新增letter.dat的那次提交已經成為當前最新的提交了,這時候我們就可以輕鬆對它進行操作了。

step2 :修改檔案內容

step3 :git addgit commit --amend

其實之前的圖上已經提示我們如何操作了,先git add,然後執行命令git commit --amend提交變更。

此時就已經完成了對那次提交的修改,檢視日誌和檔案內容,大功告成。

Git 如何遺棄已經 Push 的提交

相信大家都知道,git 相比於 svn,優勢不言而喻,以致於現在大多數公司的專案都在採用 git 進行管理。作為乙個開發人員,對 git 的使用自然應該是得心應手。如果你還不會使用 git 的話,那我勸你還是不要聲張,好好的去學習一番,再自己弄個實驗專案走一下流程,以免遭到同事的鄙視。每個公司都會有...

誤操作,導致git的ssh授權校驗被覆蓋

下午在做從跳板機到git伺服器的配置時,在git伺服器上操作授權校驗檔案時,cat檔案做追加操作,結果敲的 然後回車就悲劇了,哎!瞬時石化了,悲劇了,備份也被我mv了.幸虧在另外一屏還有一些screen時的一些記錄,無奈在screen中無法滾屏,趕緊拷貝,分析規律,幸虧還能找到每個人的pub key...

恢復被覆蓋的linux引導

本來我的機器裝的雙系統 xp fedora 最近重灌了xp,不知道怎麼搞的,原來用bootpart.exe做的引導都不行了,於是懷疑是linux分割槽上的引導資訊沒了,於是找出fedora安裝盤,進入 rescure mode,chroot mnt sysimage,cd boot grub 好,進...