我有一个分支,在这个分支中我修改了几个文件,进行了几次提交。一段时间以前,我开始在这些文件的子集上进行一些工作,并检入了一些更改。之后,我们决定将这些文件删除作为另一个分支正在完成的事情的一部分。因此,我想要“取消触摸”这些文件 - 它们与我在我的分支中所做的工作无关,我不想因此造成任何合并冲突与其他地方已删除的文件。
是否有任何方法可以更新使这些文件保持不变的提交,并且不会出现在我的分支历史记录之中?
更具体地说:
考虑当前状态下的以下源代码树:
src/A.java
src/B.java
src/C.java
src/D.java
在大约10个提交记录之前,有一个提交记录做了以下更改:
M src/B.java
M src/C.java
A src/D.java
有没有办法从历史记录中删除对C.java
的更改,这样当您查看其上面的提交时,它看起来像
M src/B.java
A src/D.java
如您所见,C.java
文件未被我的分支更改过。
我尝试了使用 git revert
命令,但是没有找到一种不需要创建新提交的方式来撤销更改。我知道可以通过在我的分支中删除文件来避免合并冲突,但这感觉像是一个“丑陋”的解决方案,本次虽然有效但下一次可能无效(如果另一个分支的更改不是删除而是修改呢?),所以如果有更加优雅的方法,我希望能学习到它。