我遇到了git的问题.我想hotfix
在master
本地和远程两个地方重新分支一个分支,所以这就是我所做的.
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
出现.
谢谢!
编辑:我想当我执行rebase时,最后一次提交分支更改以应用rebase更改,这就是为什么它有另一个sha1提交ID.我做了一个拉取覆盖我的本地文件.
git pull --strategy=ours origin hotfix
TheGeorgeous.. 6
您需要了解的关于rebase的一件事是:
Git将更改每个提交的SHA哈希值,而不是新基本分支的一部分.
这意味着在重新绑定本地分支后,始终会与上游分支发生冲突,唯一的方法就是强制推送到上游.
一种常见的做法是不对已被推送到上游的提交进行转换.如果只有一个人在分支机构工作,重新定位仍然可以.
在这种情况下,您没有选项,只能进行强制推送.在将来,建议您将工作分支与您的合作者分开,并将混合使用rebase和merge策略来分享您的工作
您需要了解的关于rebase的一件事是:
Git将更改每个提交的SHA哈希值,而不是新基本分支的一部分.
这意味着在重新绑定本地分支后,始终会与上游分支发生冲突,唯一的方法就是强制推送到上游.
一种常见的做法是不对已被推送到上游的提交进行转换.如果只有一个人在分支机构工作,重新定位仍然可以.
在这种情况下,您没有选项,只能进行强制推送.在将来,建议您将工作分支与您的合作者分开,并将混合使用rebase和merge策略来分享您的工作