我已经用谷歌搜索过,并阅读了很多文件。
但不幸的是我无法全部理解

我的情况是。

git branch -r
origin/HEAD -> origin/master
origin/master
origin/team/myteam

git branch -a
master
team/myteam
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/team/myteam

现在我喜欢将每个补丁从 master merge 到远程 mybranch

我试过了


git status
On branch team/myteam
Your branch and 'origin/team/myteam' have diverged,
and have 238 and 18 diffrent commits each, respectively.
nothing to commit, working directory clean

它似乎有效..但 push 返回错误..

我用gerrit。
git push origin HEAD:refs/for/team/mybranch
...
..
remote: Resolving
deltas: 100% (14481/14481) remote: Processing changes: refs: 1, done
To ssh://156.xxx.xxx.xxx/xxx  ! [remote rejected] HEAD -> refs/for/team/myteam (change 228 closed)
error: failed to push some refs to 'ssh://156.xxx.xxx.xxx/xxx

最佳答案

我假设您想推送到 origin/team/myteam 并且您在 team/myteam 中是最新的。

如果您使用 team/myteammaster 进行 rebase ,则您正在重写分支 team/myteam 的历史记录,因此 Git 不允许您推送它,因为它与 origin/team/myteam 中的历史记录冲突。

如果您确定要做什么(重写原始存储库上的历史记录),您可以使用以下命令强制推送:

 git push --force

请注意,您的队友在 pull origin/team/myteam 时可能会遇到麻烦:不建议重写共享历史记录。

您可能想要执行 merge 而不是 rebase :在这种情况下,您可以执行简单的推送,从而跳过潜在的麻烦。

关于git rebase 从 master 到远程分支。!,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16395377/

10-13 06:36