再次:快进错误
Once again: fast-forward error
所以我根据 master 重新设置了一个分支。然而,
git push --set-upstream origin MyBranch
我明白了
! [rejected] MyBranch -> MyBranch (non-fast-forward)
error: failed to push some refs to 'https://mygit@bitbucket.org/mygit/myproject.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
所以,好的。再次重新定位。顺利完成。那么
git pull
* branch HEAD -> FETCH_HEAD
好的,已经是最新的了
git push --set-upstream origin MyBranch
又是错误。我可以强行推动,但我不喜欢丢失东西的风险,老实说,我真的很想知道一个适当的解决方案来解决这个恼人的问题,即使我按照规则手册玩,它似乎也会发生。
根据你的描述,我将尝试对可能发生的事情进行有根据的猜测。
Git 拒绝将您的 rebased 提交推送到上游分支 (origin/MyBranch
),因为它们 与已经存在的提交哈希 不同那里。它们是不同的,因为您 将本地提交重新定位在与上游分支中不同的提交 之上。
问题
我认为您的情况可能是这样的:
Local Origin
A---B---C---F (master) A---B---C---F (master)
\ \
D'---E' (MyBranch) D---E (MyBranch)
origin/MyBranch
中的提交 D
和 E
最初是基于 master
中的 C
。然后F
成为master
的新HEAD
。
- 当您在
master
中执行 git pull
时,您在本地仓库中获得了新提交 F
。
- 您将
MyBranch
重新定位在 master
之上,现在是 F
,这将 D
和 E
的提交哈希更改为 D'
和 E'
.
- 发布
git push origin MyBranch
拒绝覆盖提交,因为 Git 将它们视为与 origin
中的 不同的提交 ,它们仍然是基于 C
.
(可能的)解决方案
如果你是唯一一个在 MyBranch
工作的人,或者你可以轻松地与 任何可能有兴趣在该分支工作的人 交流,我说只需强制推送您重新提交的提交即可。同样,假设在此期间没有其他人将提交推送到 origin/MyBranch
,您将不会丢失任何东西。
如果这根本不能反映您的情况,请随时忽略此建议,如果可能,请添加有关该问题的更多详细信息。
所以我根据 master 重新设置了一个分支。然而,
git push --set-upstream origin MyBranch
我明白了
! [rejected] MyBranch -> MyBranch (non-fast-forward)
error: failed to push some refs to 'https://mygit@bitbucket.org/mygit/myproject.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
所以,好的。再次重新定位。顺利完成。那么
git pull
* branch HEAD -> FETCH_HEAD
好的,已经是最新的了
git push --set-upstream origin MyBranch
又是错误。我可以强行推动,但我不喜欢丢失东西的风险,老实说,我真的很想知道一个适当的解决方案来解决这个恼人的问题,即使我按照规则手册玩,它似乎也会发生。
根据你的描述,我将尝试对可能发生的事情进行有根据的猜测。
Git 拒绝将您的 rebased 提交推送到上游分支 (origin/MyBranch
),因为它们 与已经存在的提交哈希 不同那里。它们是不同的,因为您 将本地提交重新定位在与上游分支中不同的提交 之上。
问题
我认为您的情况可能是这样的:
Local Origin
A---B---C---F (master) A---B---C---F (master)
\ \
D'---E' (MyBranch) D---E (MyBranch)
origin/MyBranch
中的提交D
和E
最初是基于master
中的C
。然后F
成为master
的新HEAD
。- 当您在
master
中执行git pull
时,您在本地仓库中获得了新提交F
。 - 您将
MyBranch
重新定位在master
之上,现在是F
,这将D
和E
的提交哈希更改为D'
和E'
. - 发布
git push origin MyBranch
拒绝覆盖提交,因为 Git 将它们视为与origin
中的 不同的提交 ,它们仍然是基于C
.
(可能的)解决方案
如果你是唯一一个在 MyBranch
工作的人,或者你可以轻松地与 任何可能有兴趣在该分支工作的人 交流,我说只需强制推送您重新提交的提交即可。同样,假设在此期间没有其他人将提交推送到 origin/MyBranch
,您将不会丢失任何东西。
如果这根本不能反映您的情况,请随时忽略此建议,如果可能,请添加有关该问题的更多详细信息。