Command-Line
Git:更改先前送出的內容並推送
我正在審查一個 repo,我想發表一些評論,它會添加更多內容,例如添加評論,進行一些更改..等等。
如何更改先前送出的文件內容並進行推送,我知道送出歷史記錄將被更改並且所有受影響的文件也將被更改,但 git 會將受影響的文件與進一步的送出(–> 主)進行比較並執行積極改變?
您要求的是將歷史記錄n重寫為 0 次送出。這通常是一個壞主意,因為它會使您的 repo 與遠端和任何其他基於它的 repo 不同步。這將使事情進一步複雜化,以至於其他人將無法再合併,並且需要任何其他 repo 刪除他們的分支並拉下新修改的分支。在這種情況下,您不妨啟動一個新分支並為其添加註釋。無論如何,這會變得有點混亂。
要做到這一點,你有你要審查的合併(例如,我們將使用commits
A
和):B``C``A
...A --B --C (pull-request) \ A' (review) git checkout HEAD{3} git checkout -b review
然後進行您的評論修改並簽入。
git add . # or specify the specific files git commit -m "message" --author="original author"
或者,如果您想要相同的消息/作者並且不想輸入它,您可以使用以下內容,我會將其放入腳本或別名 git 命令中:
git add $(git diff-tree --no-commit-id --name-only -r <sha-of-A>) git commit -m "$(git rev-list --format=%B <sha-of-a>)" --author="$(git rev-list --format=%an <sha-of-A>)"
也可以通過從適當的父級檢索適當的 sha 來自動完成,但我不完全確定如何區分分支父級和合併父級 atm。
下一個合併
B
到審核git merge <sha-of-B>
然後進行您的評論修改並簽入。(見上文)。
繼續這樣做,直到你完成,你有:
...A --B --C (pull-request) \ \ \ A'--B'--C' (review)
然後,如果您願意,您可以合併回您的原始分支,或者只是將該審查分支返回給您正在審查的人。