git如何修改歷史記錄

本篇內(nèi)容介紹了“git如何修改歷史記錄”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

我們提供的服務(wù)有:成都網(wǎng)站建設(shè)、網(wǎng)站制作、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、禪城ssl等。為上1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的禪城網(wǎng)站制作公司

方法:1、用“git commit --amend”命令修改一次歷史記錄;2、用“git rebase -i 指定提交號”命令修改多條歷史記錄;3、用“git filter-branch --filer 命令 修改的范圍”命令重寫歷史記錄。

本文操作環(huán)境:Windows10系統(tǒng)、Git2.30.0版、Dell G3電腦。

git怎樣修改歷史記錄

初級選手 git amend

如果僅僅是在提交之后發(fā)現(xiàn)自己手殘了,用git commit --amend就可以修改剛才的那一次提交。該命令在執(zhí)行以后,會將剛剛的那一次提交從當(dāng)前分支移除,把工作空間恢復(fù)到上次準(zhǔn)備提交的狀態(tài)(同時混合了上次提交之后的更改),然后顯示出一個 vim 的界面讓你去修改上次的提交信息。在vim 中保存后,就會把當(dāng)前的所有修改一并用新的提交信息提交了。

該命令僅僅可以修改最后一次提交,一個命令相當(dāng)于執(zhí)行了如下一系列動作:

    $ORIG_HEAD=`git show`#保存當(dāng)前的這次提交的 commit 號
    $git reset --soft HEAD^#回到最后一次提交準(zhǔn)備提交前的狀態(tài)
    $...#做一些操作和修改
    $git commit -c $ORIG_HEAD#表示用最后一次提交的提交信息來做為提交信息,不過會調(diào)出編輯器界面

中級選手 git rebase

前面的git commit --amend僅僅可以修改最后一次提交,但是當(dāng)自己一時興起,手殘了一路時,這個命令就無法拯救我們了,這個時候我們就要祭出git rebase -i 這個大殺器來幫我們修改那些不堪回首的往事。

實際上,git rebase -i并不是一個專門用來修改歷史記錄的命令,而是一個讓我們可以交互式(就是一個個來) 進(jìn)行衍合操作的命令,不過我們可以用這個命令來實現(xiàn)對于提交歷史的修改。

該命令的使用方法是git rebase -i <指定提交號>,比如可以用git rebase -i HEAD~3來修改本次提交、上次提交、上上次提交共三次提交。

這是一個 vim 編輯器的界面,這里是讓我們編輯這一段腳本,可以使用的命令有下方注釋中的六個命令。當(dāng)退出當(dāng)前編輯其的頁面后,git 就會根據(jù)這個腳本一個個的針對提交執(zhí)行對應(yīng)的操作(從最早的那次提交開始執(zhí)行)。

如果僅僅是想修改提交信息,就把所有的 pick 改成 r ,然后:wq保存,接下來 git 就會讓你一個個的從最早的提交信息開始修改。

剩余的命令中, e 是會在修改對應(yīng)提交時跳出 vim 編輯器,此時 HEAD 指針指向這次提交,此時可以用git commit --amend對這次提交進(jìn)行各種修改,然后執(zhí)行 git rebase --continue就會繼續(xù)下一次操作;s 則是會在修改對應(yīng)提交的時候把這次的提交和其父提交合并為一次提交;f 是和s類似但是會忽略當(dāng)前提交的信息,直接采用父提交的信息;x 是需要在 x 之后輸入命令然后在 HEAD 指向這次提交的時候執(zhí)行。利用這些命令還可以完成重排提交、拆分提交的動作。

終極殺手 git filter-branch

假如說我們提交了 N 多次以后,突然發(fā)現(xiàn)我們這些提交的郵箱都寫錯了(╯°□°)╯︵ ┻━┻,這個時候如果使用之前提到的命令,估計還沒改完就要累死了。這個時候我們就可以使用git filter-branch來重寫分支,其可以批量的對每個提交執(zhí)行我們預(yù)設(shè)的操作。

git filter-branch命令使用的基本使用格式是git filter-branch --<各種filer> '命令' <修改的范圍> ,不同的 filter 會提供給命令不同的輸入和輸出。比如,--msg-filter表示修改提交信息,原提交信息從標(biāo)準(zhǔn)輸入讀入,新提交信息輸出到標(biāo)準(zhǔn)輸出;--tree-filter表示修改文件列表等等。最后會有一個重寫的范圍。比如,git filter-branch --env-filter 'GIT_AUTHOR_EMAIL=john@example.com export GIT_AUTHOR_EMAIL' HEAD 就可以用來重寫郵箱。建議在調(diào)用命令之前先啦出一個分支做嘗試再在自己要修改的分支上執(zhí)行操作。

“git如何修改歷史記錄”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

網(wǎng)站標(biāo)題:git如何修改歷史記錄
網(wǎng)站地址:http://bm7419.com/article48/gihihp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、動態(tài)網(wǎng)站網(wǎng)站內(nèi)鏈、網(wǎng)站改版網(wǎng)站設(shè)計、軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化