git push不更新远程分支

时间:2014-04-30 01:52:12

标签: git

我正在使用git执行此命令:

git push origin mybranch

它一直说“每个都是最新的”,但在服务器端没有发生任何事情。我想我之前做错了,但我不确定在哪里:

昨天我用提交号[c1]进行了提交,并将提交推送到服务器。然后我试图从另一个开发者那里获取更新:

git pull origin another

然后我用提交号[c2]提交pull并推送到服务器。但在拉动之后,项目经常崩溃,所以我决定回滚拉动:

git checkout [c1]

然后我在[c1]上工作并做了3次提交,但没有推送到服务器。今天晚上,当我试图将最后一次提交[c5]推送到服务器时,它一直说“一切都是最新的”,但服务器分支始终保持在[c2]。我做了:

git branch

在我身边,发现我在(没有分支)。然后我做了一个

git checkout -b newbranch

然后我看到newcranch被替换(没有分支)。然后我做了

git push origin newbranch

最后推送到服务器。但是我不知道在这些命令中发生了什么?谢谢!

2 个答案:

答案 0 :(得分:1)

在GIT中你应该在一个分支上推动一些变化。

  

发生了什么事?

这完全是因为以下命令。

git checkout [c1]

让我们开始说你在分支 B1 和HEAD指向提交 [c2] 。如果直接签出提交sha,它会使您进入“分离头”状态,这基本上只意味着您的工作副本已签出的当前sha,没有指向它的分支。现在你已经提交了3次提交(不在任何分支上)。因此,挽救你工作的唯一方法就是将你的头脑连接到某个分支。这就是你使用命令“ git checkout -b newbranch ”所做的

  

可以做些什么?

而不是直接签出提交[C1],

<强>选项1

如果您不需要更改commit [c2],则可以使用“ git revert [c2] ”还原[C2]

<强>选项2

如果您不需要更改commit [c2]并且您想要从git历史记录中删除它,那么您可以使用“ git reset --hard HEAD ^ <恢复[C2] / strong>“并使用” git push -f

强制推送它

答案 1 :(得分:0)

最有可能的原因是你错过了git push上的-u选项(跟踪上游分支)。应该是

git push -u origin newbranch.

有关详细信息,请参阅此SO链接: How do you make an existing Git branch track a remote branch?