我不太了解如何使用rebase,但似乎rebase只是将起点更改为更近期的提交
在我的情况下,我在推送的分支 test 上做了一些事情,另一个人将更改B拉到了E 与此同时,我略微改变了一个提交,我删除了(坏主意)我的远程分支以重新创建具有相同提交的分支
所以因为这个现在它照顾合并:
A---B---C---D---E--F--G--H master
\--B'--C'--D'--E'/ test
B和B'是相同的,同时,相同的提交消息...,C,C'也,.. D和D',E和E'
除了git rebase -i之外还有其他解决方案,我尝试了但是你失去了其他分支合并历史记录
我实际上想要删除B,C,D,E,是否可以合并分支?
我无权推动远程主控,只能拉
我尝试修剪但是那些不必要的提交没有删除,因为它们指向其他人 如果可能的话,我真的想把主人A变成主人E'。
thx for tips
修改:否则,具有右推权的人怎么能永久地解决这种情况呢?
我可以通过
解决这个问题git reset --hard A
git pull repo1 test (where test still is at E')
git rebase --onto F A master
但是如果管理员拉了它,我猜它会没有效果?,他应该在任何其他用户从这个烂摊子中拉出来之前自己动手操作吗?
答案 0 :(得分:3)
在F处摆脱不需要的合并的最简单方法是create a grafts file并在那里添加一行<hash of F> <hash of E'>
然后用gitk检查历史记录是否符合您的要求。如果所有看起来都是文件,那么下一步就是通过重写最近的提交来使移植永久化:git filter-branch --tag-name-filter cat -- <hash of A>..master
最后用git push -f