站長資訊網
        最全最豐富的資訊網站

        git怎樣修改歷史記錄

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

        git怎樣修改歷史記錄

        本文操作環境:Windows10系統、Git2.30.0版、Dell G3電腦。

        git怎樣修改歷史記錄

        初級選手 git amend

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

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

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

        中級選手 git rebase

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

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

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

        git怎樣修改歷史記錄

        如圖,我如果向修改這三次提交,輸入git rebase -i HEAD~3,就會出現如下的界面:

        git怎樣修改歷史記錄

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

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

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

        終極殺手 git filter-branch

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

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

        推薦學習:《Git教程》

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 少妇人妻偷人精品无码视频 | 日韩精品欧美| 国产在线精品一区二区中文| 久久国产综合精品五月天| 精品国产_亚洲人成在线高清| 亚洲av永久无码精品表情包| 国产欧美精品一区二区色综合| 国产92成人精品视频免费| 久久精品www人人爽人人| 亚洲国产综合精品一区在线播放| 国产精品自在拍一区二区不卡| 精品国产_亚洲人成在线高清| 国产AV国片精品有毛| 亚洲电影日韩精品| 国产精品自在线拍国产手机版| 精品亚洲欧美高清不卡高清| 99久久精品午夜一区二区| 国产亚洲精品a在线无码| 亚洲精品二区国产综合野狼| 精品国产一区二区三区AV性色 | 最新在线精品国自av| 精品久久久无码中文字幕天天| 91人前露出精品国产| 亚洲欧美日韩精品| 777欧美午夜精品影院| 免费精品一区二区三区第35 | 精品一区二区三区在线观看视频 | 亚洲国产精品一区二区成人片国内| 男女男精品网站免费观看 | 91精品在线国产| 国产成人精品曰本亚洲79ren| 亚洲国产精品一区| 亚洲国产精品久久久久| 亚洲成人精品久久| 99热这里只有精品6国产免费| 99精品视频在线观看婷| 成人国产一区二区三区精品 | 亚洲精品国产电影| 亚洲国产精品SSS在线观看AV| 人妻少妇精品视频二区| 国产最新进精品视频|