假设我有一个包含以下提交的回购(git版本1.7.1)
A -> B -> C -> D ->E
我的HEAD在E
。现在我想删除C,同时保持所有内容都像A -> B -> D -> E
一样。
你能帮我怎么做吗?
答案 0 :(得分:5)
您可以使用git rebase -i B
执行此操作。但请注意,D
和E
将被重写(获取不同的提交SHA),因此结果将为A -> B -> D' -> E'
。 E'
的内容应相当于E
(减去您现在正在丢弃的C
中所做的更改),但ID会有所不同。这就是为什么你在任何地方发现有关已经被推送的可能被重新提交的提交的警告,并且可能被其他人用作新工作的基础。您正在重写历史记录,这将导致其他存储库混淆,除非他们期待它。但是,如果这是一个私有存储库,或者你尚未推送,那么你应该很好地重新安排提交。