Git是目前IT行業使用率最高的版本控制系統,相信大家在日常工作中也經常使用,每次Git提交都會包含提交信息,常用的包括說明、提交人和提交時間等,此篇文章主要向大家介紹下如何修改這些信息,這些命令在正常使用時可能不常用,但還是建議收藏以備不時之需。 ## 新提交 ### 指定提交信息 在使用`git ...
Git是目前IT行業使用率最高的版本控制系統,相信大家在日常工作中也經常使用,每次Git提交都會包含提交信息,常用的包括說明、提交人和提交時間等,此篇文章主要向大家介紹下如何修改這些信息,這些命令在正常使用時可能不常用,但還是建議收藏以備不時之需。
新提交
指定提交信息
在使用git commit
命令時,通過-m
或者--message
參數指定本地提交的信息,示例如下:
git commit -m "<提交信息>"
指定提交日期
正常的git提交會預設使用當前時間,但在提交時可以通過--date
參數來指定提交時間,不過時間內容的格式與日常使用的格式不一致,此處可以通過git log
查看歷史後複製出來然後進行修改。
git commit -m "<提交信息>" --date "Thu Jun 29 06:59:36 2023 +0800"
可以看到通過手動指定後第二次提交的時間在第一次提交之前,這與正常提交是不相符的。修改時間可能會導致git記錄錯亂,僅建議在明確需要修改時間的場景下使用。
指定提交人
正常在提交時git會預設使用當前項目設置的作者信息,如果未設置則使用本機git全局配置,但在提交時可以通過--author
參數指定提交人,參數格式必須為name<email>
git commit -m "change author" --author "aotian<[email protected]>"
可以看到最新一次的提交作業已經與前兩次的不一致了。
追加提交
在工作中偶爾也會遇到提交完了以後發現漏下了某個文件的問題,再提交一次雖然可以解決,但git提交記錄會比較難看,強迫症患者看了那是渾身難受,其實我們可以通過追加的方式進行處理,這樣可以僅保留同一個記錄。追加提交時也可以使用以上提到的參數修改提交信息。
git commit --amend
可以看到ammend之後最近一次提交的信息已經被修改,但作者和時間並沒有變化。
歷史提交
修改提交說明
如果我們有整理git提交記錄的習慣,那工作中肯定需要去修改歷史提交,此時我們需要先回退到要修改的提交之前,然後進行修改,還是上邊的例子,如果我們需要修改第二次提交,那麼我們需要先回退到第一次提交。
git rebase -i d3dabbe3dce8717b264bba23ee78f19c58bb6fed
執行後會打開一個臨時文件,在文件頭部會列出當前提交後續所有的提交(請註意這個列表的順序是按照提交時間順序排列的),每個提交行首的pick
欄位代表需要執行的操作,具體選項已經在下方註釋中進行了說明,常用的包括預設的pick
,修改時使用的reword
和edit
,二者區別是reword
提交後會自動合併,所以只能編輯提交信息,而edit
提交後會停留在修改的提交,之後可以通過ammend
修改提交內容,此處我們僅需要修改提交信息,所以將第一行pick
修改為reword
,之後保存即可。這一部分的操作會因git設置的不一致可能有所差異,有的命令行里的vim,有的是外部的編輯器(例如Visual Studio Code等)。
保存後會自動打開另外一個臨時文件,這個文件里展示的就是上一步中指定的要修改的提交,文件第一行就是提交信息,修改後保存即可完成修改,如果提交信息內容為空則會中止此次修改,具體內容如下圖:
修改後執行git log查看提交記錄即可發現中間的內容已經被修改
修改作者或日期
在上一部分我們修改了提交信息,中間提到過reword
和edit
的區別,而此處我們修改作者或提交日期則需要使用到edit
,同樣使用git rebase -i
回退到要修改的內容之前,然後在編輯臨時文件時將第一行修改為edit
,然後保存,之後我們會看到如下信息:
此時提交停在了第二個提交處,也就是我們要修改的提交,在控制台的提示中可以看到通過git rebase --continue
可以回到最新提交,而我們要修改作者或提交日期則需要使用git commit --amend
,這個命令同樣可以使用--date
和--author
參數。
git commit --amend --author "aotian<[email protected]>" --date "Thu Jun 30 16:59:36 2023 +0800"
執行後會打開臨時文件確認提交信息,直接保存即可,保存後執行git rebase --continue
回到最新提交,然後執行git log
查看提交信息即可發現中間的提交已經被修改,且時間晚於排在它後面的提交。