在我的本地存储库中,我使用该提交的SHA从先前的提交创建了一个新分支。接下来的步骤:
git checkout <sha of some previous commit>
git branch new_branch
之后,我对new_branch
进行了更改并完成了我的工作。
现在,我想将这个新创建的分支推送到我的远程存储库(Bitbucket)。为此,我在bitbucket上创建了一个名为new_branch
的新分支。
之后,我尝试将我的本地new_branch
的更改推送到使用:
git push -u origin new_branch
但是有以下错误:
> ! [rejected] new_branch -> new_branch (non-fast-forward)
> error: failed to push some refs to
> '<url to my repo>' 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.
有一个错误,因为两个分支都来自不同的提交。我知道在远程存储库(bitbucket)上创建new_branch
是不正确的方法。
我们如何在远程存储库(bitbucket)中创建一个新分支,该分支与从先前提交创建的本地分支同步?
感谢。
解决方案:
我从Bitbucket删除了分支new_branch
。
git push origin HEAD
注意:git push origin new_branch
出现以下错误:
错误:src refspec new_branch与any匹配。
答案 0 :(得分:0)
! [已拒绝] new_branch - &gt; new_branch(非快进)
错误:无法将某些引用推送到
您无需在GitHub中创建分支。只需推送您的本地分支(如果不存在,将自动创建新分支)。
从此处创建另一个分支并推送到远程。
$ git checkout -b new_branch2
$ git push origin HEAD # push local new_branch2 = HEAD to remote
答案 1 :(得分:0)
> ! [rejected] new_branch -> new_branch (non-fast-forward)
> error: failed to push some refs to
如果这确实是输出,那么对于您的本地分支new_branch
,远程分支new_branch
已经存在并且它们不兼容。
根据您创建本地分支的方式,我实际上并不确定您是否曾进入过该分支。检查提交哈希将使您进入分离的HEAD。然后,您在该提交上创建了一个分支,但您从未切换到它。因此,您的原始步骤在提交之前应该有git checkout new_branch
。 (请注意,您可以使用git checkout -b new_branch <commit-hash>
)
为此,我在bitbucket上创建了一个名为
new_branch
的新分支。
你究竟是怎么做到的?毕竟,分支是通过向他们推送来创建的。因此,为了创建分支,您可能会向其推送其他内容 - 这可以解释为什么您的实际本地分支与远程分支不兼容。
我建议您使用git fetch
将远程的完整状态转换为本地分支,然后查看完整的历史记录和所有分支(例如使用gitk --all
)。这样你就可以理解究竟发生了什么以及分支指向的位置。
如果您最终搞清楚,远程new_branch
只是master
的副本(例如),那么您可以强行将本地new_branch
推送到它替换远程状态。否则,您可能希望创建另一个本地分支,以通过正确合并更改来修复所有内容。
答案 2 :(得分:0)
如您所知,bitbucket上的创建new_branch
不正确,因为new_branch
已从最新提交中检出,而不是您指定的提交。
要与远程同步,您应该将本地new_branch
直接推送到bitbucket。所以你应该这样:
git push -u origin new_branch
这会自动在bitbucket上创建new_branch
并设置本地new_branch
和远程new_branch
之间的跟踪关系。