git - 当 rebase 需要 merge 时应采取的正确步骤

标签 git rebase

我 pull 了远程仓库的 master 分支并创建了一个新分支。我修改了一些文件,提交它们,然后推送到远程服务器上的新分支。第二天我做了几次。

然后,我检查了 master 分支并执行了 git pull。然后我检查了我的新分支,并运行了 git rebase master。这是它变得有点模糊的地方,如果我没有很好地解释接下来发生的事情,我先道歉,因为我正在记忆。

我的 rebase 在几个文件中有一些冲突。我被告知要修复冲突,然后调用 git rebase --continue。

我通常使用第 3 方工具 (Araxis) 进行比较和 merge ,但在这种情况下,git 提示保持在原处,就好像它在等我马上编辑冲突并得到回到它。因此,我打开了我的文本编辑器并删除了我们在处理冲突时都看到的适当的“<<<<”和“-----”位,并按照我希望的方式保存文件。

然后在等待提示符下输入 git rebase --continue 并立即被告知先添加文件,然后调用 rebase。所以我运行 git add * 然后运行 ​​git rebase --continue 并完成操作。然后我被告知我应该考虑推送,因为 origin/new 分支落后了一些提交。所以我运行了 git push

然后我想我应该谨慎行事并确保一切正常,所以我调用了 git checkout master,调用了 git pull,然后检查了新分支并调用了 git pull 之后调用了 git rebase master 相同的文件又发生了冲突,感觉就像我刚刚完成了一个圆圈。

我的问题是:当 rebase 发生冲突时,采取哪些更合适的步骤来保持事情的顺利进行,有谁知道我采取的步骤是如何导致我的圈子的(诚然,不是很嗯)如上所述?

最佳答案

and called git pull followed by git rebase master

这就是它出错的地方。
您不必再次 pull 您的远程分支,添加一个代表然后从 origin 更改的提交,一旦重新基于(再次)在 master 上,将产生相同的冲突.

我通常做一个(因为我不在 master 上工作,但只在 mybranch 上工作):

git checkout mybranch

# Let's not modify any local file
git fetch

# reset my local master branch to the one I just fetched
git branch -f master origin/master

git rebase master
# resolve conflicts
# git add, git rebase --continue
git push

关于git - 当 rebase 需要 merge 时应采取的正确步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19674411/

相关文章:

git 添加不同目录下的文件

git - 让 git 跟踪自动生成的文件,但忽略 diff

git - 从多个分支 rebase

git - 如何自动删除取消自己的提交?

git - 在提交 n 时将文件添加到 git。我如何添加它而不是提交 n-m?

linux - 如何在不运行 ssh-agent 的情况下将 GitHub 与 SSH 结合使用?

eclipse egit : How to synchronize with remote repo?

git - 如何优雅地停止和启动 TGitCache.exe

Git rebase 或 merge

git - 使用 git 重新构建非线性提交链