[英]How do I selectively revert some changes in a single commit to a single file?
我的問題:我愚蠢地對文件進行了許多更改,然后一次提交了所有更改。
從那以后,我意識到很多變化都是廢話……但是很多變化也是不錯的。
如何有選擇地還原部分更改?
假設此后您還沒有提交其他任何內容,我將撤消您的提交 , 使用git add -p
您想要的文件的任何部分 ,然后重新提交 。
我很確定這應該可行
使用git rebase -i
可以將較早的提交分成幾部分,但是只能在可以重寫其歷史的分支上使用。 操作順序如下:
git rebase -i <commit>~1
其中<commit>
是要分解的提交。 在交互模式下,將pick
更改為edit
或e
更改為您想要破壞的提交。 然后關閉編輯器,讓重新設置繼續。 當rebase
到受影響的提交時,它將暫停,使您可以在那時進行所需的任何編輯。 這包括諸如git reset HEAD <file>
到取消git reset HEAD
<file>
, git reset HEAD
到全部git checkout -- <file>
所有內容,以及git checkout -- <file>
放棄工作目錄中的更改。
在這里,您可以按任意順序提交更改。 我建議git add -p
以交互方式添加補丁集,如果對同一文件的多次更改最好是多次提交的話。
最后,當您提交了所有您希望在不連續的提交中執行的所有操作,並准備好繼續進行rebase時,只需發出git rebase --continue
。
如果要避免重寫歷史記錄, 此答案將向您展示如何使用git revert --no-commit
僅還原部分提交。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.