本文摘選自文章:【jitwxs】git教程 或【csdn】git教程
如果你不想看詳細的描述,直接看步驟即可:
1.git rebase -i head~n
,將要修改的提交狀態改為edit
2.修改檔案
3.git add
4.git commit --amend
5.git rebase --continue
假設我們目錄下有三個檔案,分別是digit.dat
、letter.dat
和symbol.dat
,digit.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 rebase
d命令的互動命令中,首先逆序存放了我們最新的兩次提交,最前面的狀態為pick
。下面也提示了我們可以執行哪些命令,這裡我們這裡只使用它的edit
功能。
將我們要修改的那次提交狀態改為edit
或e
,也就是將第一行內容改為:
edit 8cc5dcb add letter.dat然後儲存退出:
git已經提示我們此時已經暫停在了8cc5dc這一次提交上,後面新的提交此時應該被隱藏掉了,檢視日誌驗證我們的判斷:
不出所料,新增symbol.dat的那次提交已經被隱藏掉了,新增letter.dat的那次提交已經成為當前最新的提交了,這時候我們就可以輕鬆對它進行操作了。
step2 :修改檔案內容
step3 :git add
並git 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 好,進...