如何应对git push上的“拒绝”?

时间:2009-10-29 00:39:46

标签: git git-checkout

我有一个主人和一个beta分支。有一种情况是推送被拒绝:

edit2:我在分公司主人身上。

$ git push
Counting objects: 9, done.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (6/6), 669.81 KiB, done.
Total 6 (delta 2), reused 0 (delta 0)
To git@github.com:foobar/codedemo.git
   a5fc71d..64430c1  master -> master
 ! [rejected]        beta -> beta (non-fast forward)
error: failed to push some refs to 'git@github.com:foobar/codedemo.git'

通常我会结帐测试版,然后拉测试版,这可能会解决它。

但是因为这是一个制作网站,所以我不能在这里查看测试版。有没有办法在没有检查的情况下拉测试?

由于这是一个生产网站,我不知何故被卡住了。

编辑:代码也在其他位置检出,我可以从其他位置做些什么来解决这里的问题吗?在其他地方没有问题。

Edit3:借助已接受的解决方案,我可以在一段时间后完成,但我更喜欢没有第二个客户端的解决方案

3 个答案:

答案 0 :(得分:4)

您可以将beta推送到其他分支,然后转到可以检查它以解决它的地方。

git push origin beta:beta-temp
# on a different machine
git fetch
git checkout beta-temp
git rebase origin/beta # puts your new commits on top of the upstream
git push origin beta-temp:beta
git push origin :beta-temp # to delete it

答案 1 :(得分:4)

如果你没有做任何奇怪的事情,那么原因就是遥控器有一个你不知道的提交,并允许推送继续将完全忽略该提交。

首先尝试pulling,这将尝试自动合并两个提交,之后您就可以推送。

如果您拉出当前未签出的分支,我认为它仍会为您创建合并。

答案 2 :(得分:0)

你想推动什么分支?

默认情况下,git push会推送您配置的所有已跟踪分支。

尝试这样做只推送当前分支:

git push origin HEAD