【问题标题】:Github branch can't seem to rebaseGithub 分支似乎无法变基
【发布时间】:2017-03-12 21:46:05
【问题描述】:

我们必须向现有项目添加新功能。 所以每个人都创建自己的分支来做一个特性。

现在,在我向我的特定分支添加了一些代码之后,我的队友告诉我最好使用 rebase 以使将来的合并更容易。

现在因为我们刚开始启动项目,很多小文件已经改变,比如 pom.xml 文件,.gitlab-ci.yml 文件,给了我很多合并错误。此外,虽然我一直在努力掌握整个 github 的内容,但我的队友同时添加了更多代码,我再也看不到树林中的森林了。

所以我要做的是保留我的新代码,但使用主分支中的所有代码更新我的特定分支。

如果我没记错的话,这正是 rebase 所做的对吗?

当我像这样执行变基时:

-git rebase master

它给了我 20 个合并错误。但事实是,自从我的分支第一次分叉以来,它会经历每一次更新,而且很多时候它只是被重写的同一个文件。所以我所做的只是将文件从 github 复制粘贴到我的项目中(它只有几个文件),然后仔细阅读每个合并错误,如果它源于我复制粘贴的文件,我只是跳过它们。

(也很奇怪的是,一些文件不断出错,即使我只是复制粘贴了我要变基到的分支中的确切文件)

然后当我最终克服最后一个错误时,它给了我这个

fatal: update_ref failed for ref 'refs/heads/dev_504': 
cannot lock ref     'refs/heads/dev_504': ref refs/heads/dev_504 is at
XXXXXXX 
but expected     XXXXXXXX
Could not move back to refs/heads/dev_504

然后我重新启动计算机并得到这个

fatal: cannot resume: .git/rebase-apply/final-commit does not exist.

然后我中止 rebase,当我再次尝试时,我再次收到 20 个错误。

github 太复杂了,我想做的就是从主分支获取代码并将我的代码添加到其中(顺便说一下只有一个文件)。

那么我可以强制从主分支拉出然后添加我的文件吗?我觉得这不是你应该怎么做的。

附: : 我通过 maven 添加了一个库,这种影响会以任何方式拉动和推动吗?

谢谢

【问题讨论】:

  • 如果你想让它变得更简单,你可以通过交互方式将所有提交重新设置在初始主节点上(即在你开始分支的提交上),然后将所有提交压缩成一个.然后在 master 上 rebase 那个单一的提交。您仍然会遇到冲突,但您只需解决一次即可。
  • 这能回答你的问题吗? Git rebase failing

标签: java git github merge rebase


【解决方案1】:

您可以做的是将分支上的所有提交压缩/压缩为一个合并提交。为此,您必须找到masterfeature_branch 的共同祖先。命令git merge-base --all master feature_branch 将给出最佳共同祖先的散列(最好只有一个散列)。请记住该哈希 (X)。现在您需要将您的工作表示为单个提交。您可以进行交互式变基或重置快捷方式(git reset --softgit commit)。我个人更喜欢后者。确保你在你的特性分支中并且有干净的状态。

git reset --soft X
git commit -m'MESSAGE'
git rebase master <= sort conflicts
git checkout master
git merge feature_branch <=it will be FastForward merge

【讨论】:

    猜你喜欢
    • 2015-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    • 2018-02-02
    • 2017-04-27
    相关资源
    最近更新 更多