“git rebase master”只在我的分支中发现文件冲突,而不是master

qyzbxkaa  于 2023-08-01  发布在  Git
关注(0)|答案(1)|浏览(150)

这是我的问题:
1.我分支出master,将分支命名为other_branch
1.我在我的分支上工作了很长时间,每天都要重新定基
1.我们把这个项目搁置了一个月
1.在此期间,似乎有人直接操纵了master上的git历史。压缩、编辑和删除提交。
1.我尝试用master进行变基,但遇到了大量的冲突--其中大部分涉及到只在我的分支中的文件。有人建议,因为文件不在master上,这当然是一个冲突。我对这种说法感到困惑。
更糟糕的是,这是在147中的第61次提交中。因此,修复冲突,重定基继续,再次修复相同的冲突,冲洗并重复。
我尝试只是一个合并,而不是尝试变基,这似乎工作,但今天早上,当我去做我的日常变基它再次被打破,或者可能仍然和我 * 以为 * 我修复它。
我也试过通过我的分支来压缩提交,但当我得到最后一次合并时,我再也不能压缩任何东西了。我是说,在这种情况下我不能。
下面是我的工作流程:

git checkout master
git pull master
git checkout other_branch
git pull other_branch
git rebase master

字符串
这样我就能避免更多的反对票
我已经在谷歌上搜索了这个问题,没有发现任何可以解决我的问题。
以下是我研究过的东西,没有特别的顺序:

  • 确定祖先分支以确保分支正确。
  • git在被添加的文件上发生冲突
  • git rebase冲突
  • 跨合并重定基
  • 更改分支祖先
  • 一般的git interactive rebase,以确保我没有搞砸。没有。
  • 应用git diff的补丁
  • 更多的东西...

如果你想知道更多的信息,告诉我

ewm0tg9j

ewm0tg9j1#

当你从另一个本地分支开始工作时,最好不要更新另一个本地分支(这里是master:无git pull master
这是因为你不知道 remotemaster是如何发展的(正如你所说:“似乎有人直接操纵了master上的git历史记录。squashed,edited and drop commits.”)
当你想对你自己的本地工作分支进行变基时,你只需要对 your commits进行变基,就是在other_branch中创建的那个。
然后你需要在origin/master上重新设置它的基:更新的远程跟踪分支(您的本地master保持不变,作为您的原始起点)
出发地:

...m--m--m--m        origin/master

...m--m--m           master
          \
           o--o--o   other_branch

个字符
收件人:

o'--o'--o'   other_branch (rebased)
             /
...m--m--m--m              origin/master

...m--m--m                 master


这样,你就可以确保只在更新后的目标分支origin/master上重定基你的提交。
完成后,您可以更新您的本地master分支,以便为重新定基的分支other_branch提供一个新的起点。

git branch -f master origin/master
o'--o'--o' other_branch
             /
...m--m--m--m            origin/master, master

你可以从那里继续工作。
如果你先更新master,那么你的rebase将包括无数的提交,从你的other_branch HEAD一直到被重写的master。

...m--m--m--m              origin/master, master
    \
     \
      ...m--m--m           Those commits should not be rebased
                \
                 o--o--o   other_branch

相关问题