Git 变基后远程分支

Git branch behind remote after rebase

我遇到了 git 的问题。 我想在本地和远程 master 上重新设置一个分支 hotfix,所以这就是我所做的。

git checkout hotfix
git pull hotfix              #just getting someone changes
git fetch origin master
git rebase origin/master

经过长时间的解决冲突和重建项目,我的工作正常,所以我必须将更改上传到远程分支。

git push origin hotfix

这就是 git 认为的:

$ git push origin login2
To https://name@bitbucket.org/***/***.git
 ! [rejected]        hotfix -> hotfix (non-fast-forward)
error: failed to push some refs to 'https://name@bitbucket.org/***/***.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.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

我试过了:

git pull --rebase

但这会产生与另一个变基之前相同的冲突,它不应该。

我知道我总能做到:

git push -f

但我宁愿避免强制推送,因为我和另一个人一起工作。我想知道我做错了什么。我以为就是这样。

PD。我有 运行 gitk,似乎没有对远程 origin/hotfix 的引用,只是出现了本地 hotfix

谢谢!

编辑: 我想当我对分支更改的最后一次提交进行变基以应用变基更改时,这就是它具有另一个 sha1 提交 ID 的原因。我拉取覆盖了我的本地文件。

git pull --strategy=ours origin hotfix

关于变基你需要知道的一件事是:

Git 将更改不属于新基础分支的每个提交的 SHA 哈希值。

这意味着在你 rebase 你的本地分支之后总是会与上游分支发生冲突,唯一的解决方法是强制推送到你的上游。

一种常见的做法是不对已推送到上游的提交进行变基。如果只有一个人在一个分支上工作,那么变基仍然可以

在这种情况下,您别无选择,只能用力推动。将来建议将您和您的合作者的工作分支分开,并混合使用变基和合并策略来共享您的工作