2345應(yīng)用商店深圳網(wǎng)站設(shè)計(jì)十年樂(lè)云seo
git 冷門使用
承接上一篇 《git 進(jìn)階篇》,簡(jiǎn)單講解 git 冷門使用方法。
碼農(nóng)常規(guī)使用工具 git 偶爾也有非常規(guī)操作。例如:提交代碼時(shí)同事已經(jīng)更新,但又不想回退本地補(bǔ)丁;或者已經(jīng)提交補(bǔ)丁需要變更提交日志信息。
作者:炭烤毛蛋 ,點(diǎn)擊博主了解更多。
提示:更多分享內(nèi)容持續(xù)更新中。
文章目錄
- git 冷門使用
- 1. 本地代碼發(fā)生修改,同步時(shí)報(bào)錯(cuò)
- 2. 歷史提交記錄中部分信息填寫錯(cuò)誤需要修改
- 3. 提交記錄中的日志信息修改
- Tips
- 結(jié)語(yǔ)
1. 本地代碼發(fā)生修改,同步時(shí)報(bào)錯(cuò)
git push origin master
! [rejected] master -> master (fetch first)
修改方式
git pull --rebase origin master
2. 歷史提交記錄中部分信息填寫錯(cuò)誤需要修改
- 逐個(gè)修改提交記錄
git rebase -i HEAD~n
將n替換為你想要修改的提交數(shù)量
依次對(duì)每個(gè)要修改的提交執(zhí)行,以為替換開(kāi)發(fā)者名字和郵箱為例。
git commit --amend --author="New Name <new_email@example.com>"
將New Name替換為新的姓名,new_email@example.com替換為新的郵箱地址。
每個(gè)提交修改完成后,使用以下命令繼續(xù)rebase。
git rebase --continue
當(dāng)rebase操作完成后 commit_id 發(fā)生改變,需要強(qiáng)制推送修改后的提交歷史到遠(yuǎn)程倉(cāng)庫(kù)。
- 批量替換需要修改信息
如果你要批量修改已經(jīng)提交的開(kāi)發(fā)者名字和郵箱信息,可以使用git filter-repo
工具。
運(yùn)行以下命令來(lái)安裝git-filter-repo包:
pip install --user git-filter-repo
- 編寫 mailmap替換文件
這里的mailmap
是一個(gè)文本文件,用于指定舊的開(kāi)發(fā)者名字和郵箱地址以及對(duì)應(yīng)的新的開(kāi)發(fā)者名字和郵箱地址。你需要?jiǎng)?chuàng)建一個(gè)mailmap
文件,并按照以下格式填寫內(nèi)容:
new_name <new_email> old_name <old_email>
每一行表示一個(gè)映射關(guān)系,將舊的名字和郵箱地址映射為新的名字和郵箱地址。
- 啟用批量修改
遍歷所有提交記錄,根據(jù)mailmap
文件中的映射關(guān)系,對(duì)所有的提交記錄進(jìn)行批量修改。git filter-repo --mailmap mailmap
監(jiān)測(cè)執(zhí)行結(jié)果
git filter-repo
修改完成后,同樣需要強(qiáng)制推送修改后的提交歷史到遠(yuǎn)程倉(cāng)庫(kù)。
也可以按照指定提交記錄區(qū)間進(jìn)行更替。
git filter-repo --mailmap mailmap --refs COMMIT_ID...
COMMIT_ID 提交之后記錄進(jìn)行修改。
請(qǐng)注意,這種方法會(huì)改變提交歷史,可能會(huì)對(duì)其他開(kāi)發(fā)者的工作造成影響。因此,在執(zhí)行這些操作之前,請(qǐng)確保與團(tuán)隊(duì)中的其他開(kāi)發(fā)者進(jìn)行溝通,并確認(rèn)他們都能夠適應(yīng)提交歷史的更改。此外,強(qiáng)烈建議在修改提交歷史之前,先備份你的倉(cāng)庫(kù)以防萬(wàn)一。
3. 提交記錄中的日志信息修改
要修改 Git 提交記錄中的日志信息,可以使用 git commit --amend
命令。
- 查找提交補(bǔ)丁哈希值
git log
查看最近的提交記錄,找到你想修改的提交的哈希值(commit hash)。
- 更改提交信息
git commit --amend -m "commit info"
附加參數(shù) -m "新的提交信息"
來(lái)修改提交的日志信息。將 “新的提交信息” 替換為你想要的新信息。
請(qǐng)注意
:Git 會(huì)使用新的日志信息創(chuàng)建一個(gè)新的提交對(duì)象,并覆蓋原始提交。這將改變提交的哈希值,因此如果你已經(jīng)將這個(gè)提交推送到遠(yuǎn)程倉(cāng)庫(kù),你可能需要在推送之前使用 git push --force
命令來(lái)強(qiáng)制更新遠(yuǎn)程分支。
Tips
內(nèi)容持續(xù)更新中。
結(jié)語(yǔ)
不枉博主詳細(xì)講解,歡迎訂閱博主–炭烤毛蛋 。