在一个项目中,一个转包商在树中移动了一些文件,做了提交(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。
答案 0 :(得分:1)
一种可能性是创建第二个分支,将第一个分支重置为违规提交之前,然后从第二个分支中挑选出所需的提交。
git checkout branch1
git checkout -b branch2
git reset --hard <commit sha>
git cherry-pick <commit sha from branch 2>
...