一、問題說明
git commit 后,發(fā)現(xiàn)剛才的備注寫錯了,或者代碼漏掉了,想取消剛才的提交。此刻有兩種方法
(1)使用git reset命令將剛才的提交會退掉(需要注意的是git reset --soft 和git reset --hard的區(qū)別)。
(2)修改剛才的提交:git commit --amend。這個命令的實質(zhì)是使用一次新提交覆蓋上一個提交
相比git reset,git commit --amend有很多優(yōu)點,比如如果工作區(qū)已經(jīng)改的面目全非,這時如果執(zhí)行 git reset, 就很難分的清哪些內(nèi)容屬于被撤銷的提交了,而且回退已經(jīng)push的提交,那么reset后有可能會因為本地版本比遠程版本低而造成push被拒絕。
這里說第二種方法,git commit --amend
二、問題重現(xiàn)
1、 代碼修改后,進行了第一次提交。請注意這里的版本號
2.現(xiàn)在我現(xiàn)在發(fā)現(xiàn)剛才的提交錯了,下面開始amend的操作,修改剛才的提交
$ git commit --amend
得到如下的界面,出現(xiàn)一個vim編輯器,修改相關(guān)內(nèi)容后,保存。如圖所示我修改了提交的備注
保存后再看一下log日志,很明顯,我成功的修改了提交的備注。但是需要注意的是,提交的版本號也變了,因此說git commit --amend命令的實質(zhì)是使用一次新提交覆蓋上一個提交。
至此,git commit --amend的使用已經(jīng)介紹完畢了,有興趣可以繼續(xù)往下閱讀。
問題擴展
有可能出現(xiàn)一個問題。我使用amend修改提交之后發(fā)現(xiàn),原來我第一次的提交才是對的,amend的修改是錯誤的。那我想回到第一次提交的那個版本,怎么辦?
這時候就可以使用git reset來進行恢復(fù)了。
首先使用 git reflog 命令查看操作記錄,git reflog可以查看到你的所有操作歷史,就像回退commit一樣,你可以回退你的操作,當然不限于這里的amend,其他操作也可以使用這種方法撤回。
很明顯,我們只需要回退’d5edfc3‘那個操作就行了。
我這里使用了git reset --hard (–hard參數(shù)會將回退的內(nèi)容丟棄掉,請根據(jù)自己的需求謹慎使用)。
再次查看log后,很明顯可以看到提交的備注、尤其是版本號,已經(jīng)回到最開始的那一個版本了。文章來源:http://www.zghlxwxcb.cn/news/detail-410583.html
在Git中,總是有后悔藥可以吃的。文章來源地址http://www.zghlxwxcb.cn/news/detail-410583.html
到了這里,關(guān)于Git進階:修改上次提交 git commit --amend的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!