Github 分支似乎无法变基

Github branch can't seem to rebase

我们必须向现有项目添加新功能。 于是大家自己创建分支做一个feature

现在,在我向我的特定分支添加一些代码后,我的队友告诉我最好重新设置基准,以便将来的合并更容易。

现在因为我们正处于启动项目的最开始阶段,所以很多小文件已经更改,比如 pom.xml 文件,.gitlab-ci.yml 文件,给了我很多合并错误。此外,虽然我一直试图在精神上掌握这整个 github 事情,但我的队友同时添加了更多代码,我再也看不到树木中的森林了。

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

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

当我像这样执行 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.

然后我中止变基,当我再次尝试时,我再次遇到 20 个错误。

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

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

P.S。 : 我通过 maven 添加了一个库,这会以任何方式影响拉和推吗?

谢谢

您可以做的是 compress/squash 将您分支上的所有提交合并为一个提交。为此,您必须找到 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