【发布时间】:2013-07-06 01:22:02
【问题描述】:
我有一个分支,我在多个提交中对多个文件进行了一些更改。有一次,不久前,我开始对这些文件的一个子集做一些工作,并检查了一些更改。之后,我们决定删除这些文件,作为在另一个分支中完成的工作的一部分。因此,我想“取消”这些文件 - 它们与我在分支中所做的事情不再相关,并且我不想因此与其他已删除的文件造成任何合并冲突。
我有什么方法可以更新做出这些更改的提交,以使这些文件保持不变,并且在我的分支的历史记录之外?
更具体的说法:
考虑以下处于当前状态的源代码树:
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,但在不创建新提交的情况下无法找到一种方法来做到这一点,这会重置旧提交所做的更改。我知道我也可以通过简单地删除我的分支中的文件来避免合并冲突,但这感觉就像一个“丑陋”的解决方案,这一次有效但可能不是下一次(如果另一个分支中的更改不是删除,怎么办?但是修改?),所以如果有更清洁的方法我想学习它。
【问题讨论】:
标签: git version-control git-revert