在Git中如何修复删除然后重新添加提交回历史记录?

时间:2015-01-23 17:05:54

标签: git git-history-graph

在一个项目中,一个转包商在树中移动了一些文件,做了提交(Git将它们标记为已删除),使用git add将它们重新添加到树中。这发生在几次提交之前。在我将更改合并到我的树之前,我想解决这个问题。如何在git历史中的正确位置“重新连接”这些文件?

更新

好的,因为人们建议撤消提交。这不是我想要的(我想)。

想象一下以下情况

A
|
|\
| \
|  B
|   mv file_x file_y
|   git commit 1
|   |
|   |
|   git commit 2
|   |
|   |
|   git commit 3
|   |
|   |
|   git add file_y
|   git commit 4
| /
|/
|

我想将file_x的历史“拼接”到提交1以及file_y,因为提交4而不会丢失之间发生的任何其他更改,并且提交1和4。

1 个答案:

答案 0 :(得分:1)

一种可能性是创建第二个分支,将第一个分支重置为违规提交之前,然后从第二个分支中挑选出所需的提交。

git checkout branch1
git checkout -b branch2
git reset --hard <commit sha>
git cherry-pick <commit sha from branch 2>
...