我已经用谷歌搜索过,并阅读了很多文件。
但不幸的是我无法全部理解
我的情况是。
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/myteam
对 master
进行 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/