我有一个分支,我想在我的主人的最新提交上重新加入.问题是master上的其中一个提交是删除和忽略一组特定的文件(见
this question).
如果我只做一个直接的rebase,这些文件将再次被删除.无论如何在git中执行此操作,而不是手动复制所有文件,然后再将它们复制回来?
或者我应该做一些事情,比如在master上创建一个新的分支,然后合并到旧分支的提交中?
尝试ascii艺术:
master branch
| w work in progress on branch
C | committed further changes on master
| |
B / committed delete/ignore files on master
| 2 committed changes on branch
| /
A / committed changes on master which I now need to get branch working
| 1 committed changes on branch
0___/ created branch
(做艺术,我意识到我可以从A重新绑定分支,然后在我完成时合并,但我仍然想知道是否有办法正确地做到这一点’)
更新警告任何人尝试这个.这里提出的解决方案很好,但是当你再次检查master时,将重新应用B提交,并且你再次丢失所有文件:(
最佳答案 根据你的评论,我收集你需要在除了B之外的主人之上重新设置dev分支.
您不希望看到在一个分支中删除的文件在另一个分支中被删除.
一种可能的解决方案是:
> rebase –interactive master重写提交顺序(如果可能)
0--A--C'--B' master \ --1--2--w dev
>在C’之上的rebase dev分支(代表除B之外的所有主提交)
0--A--C'--B' master \ --1'--2'--w' dev
这意味着你还没有将master推送到另一个存储库(否则,对于那些希望在他们自己的repo / master分支中拉取master的人来说,这会涉及合并的噩梦)