我有一个远程gitosis服务器和一个本地git存储库,每次我在代码中做大的更改时,我也会将更改推到该服务器。

但是今天我发现,即使我有一些本地更改并提交到本地存储库,当运行git push origin master时,它说“一切都是最新的”,但当我使用git clone在远程服务器上签出文件时,它不包含最新的更改。我只有一个名为“master”的分支机构和一个名为“origin”的远程服务器。

PS: 这是git在运行ls-remote时显示的内容,我不确定它是否有帮助

$ git ls-remote origin
df80d0c64b8e2c160d3d9b106b30aee9540b6ece        HEAD
df80d0c64b8e2c160d3d9b106b30aee9540b6ece        refs/heads/master
$ git ls-remote .
49c2cb46b9e798247898afdb079e76e40c9f77ea        HEAD
df80d0c64b8e2c160d3d9b106b30aee9540b6ece        refs/heads/master
df80d0c64b8e2c160d3d9b106b30aee9540b6ece        refs/remotes/origin/master
3a04c3ea9b81252b0626b760f0a7766b81652c0c        refs/tags/stage3

当前回答

从你的git状态来看,你的情况可能和我的不一样。

但无论如何,这是发生在我身上的事情。我遇到了以下错误:

fatal: The remote end hung up unexpectedly
Everything up-to-date

这里更有意义的信息是遥控器挂了。结果是由于超过了http post缓冲区的大小。解决办法是增加

Git配置http。postBuffer 524288000

其他回答

从你的git状态来看,你的情况可能和我的不一样。

但无论如何,这是发生在我身上的事情。我遇到了以下错误:

fatal: The remote end hung up unexpectedly
Everything up-to-date

这里更有意义的信息是遥控器挂了。结果是由于超过了http post缓冲区的大小。解决办法是增加

Git配置http。postBuffer 524288000

验证您没有篡改远程URL。

I just wanted to also mention that I ran into this after enabling Git as a CVS in a local Jenkins build configuration. It appears that Jenkins checked out the most recent commit of the branch I gave it and also reset my remote to correspond to the paths I gave it to the repo. Had to checkout my feature branch again and fix my origin remote url with 'git remote set-url'. Don't go pointing a build tool to your working directory or you'll have a bad time. My remote was set to a file path to my working directory, so it naturally reported everything up-to-date when I attempted to push changes with the same source and destination.

$ git push origin local_branch:remote_branch

解释

我也犯了同样的错误,花了几个小时试图解决这个问题。最后我找到了。 我不知道的是git push origin branch-x会尝试在本地搜索branch-x然后推送到远程branch-x。

在我的例子中,我有两个远程url。我做了一个从分支-x到分支-y的签出,当我试图从本地的y推到远程的x时,我有一条消息,一切都是最新的,这很正常,因为我正在推到第二个远程的x。

长话短说,为了不落入这种陷阱,你需要指定源ref和目标ref:

$ git push origin local_branch:remote_branch

更新:

如果你每次推送分支都要运行这个命令,你可能需要设置本地和远程分支之间的上游,如下所示:

$ git push --set-upstream origin local_branch:remote_branch

Or

$ git push -u origin local_branch:remote_branch

呃. .如果你是一个git新手,你确定你在git push之前有git commit吗?我第一次就犯了这个错误!

超级罕见-但仍然:在Windows上,它可能是打包refs有一个带有一个字母大小写的分支(即dev/mybranch),而refs文件夹有另一个大小写(即dev/mybranch)当核心。Ignorecase设置为true。

解决方案是手动从wrapped -refs中删除相关行。没找到更干净的解决办法。