我有一个远程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

其他回答

当我在Github上合并一个分支并继续在本地开发时,我自己也遇到了这种情况。我的解决办法与其他人的建议略有不同。

首先,我从我的旧本地分支(我不能推)上分支了一个新的本地分支。然后我将新的本地分支推送到原始服务器(Github)。即。

$ git checkout -b newlocalbranch oldlocalbranch
$ git push origin newlocalbranch

这得到的变化显示在Github上,虽然在newlocalbranch而不是oldlocalbranch。

这里,我的解决方案与上面的不同。我还没有弄清楚这个问题是怎么发生的,但我解决了它。有点出乎意料。

现在来看:

$ git push origin use_local_cache_v1 Everything up-to-date $ git status On branch test Your branch is ahead of 'origin/use_local_cache_v1' by 4 commits. (use "git push" to publish your local commits) ...... $ git push fatal: The upstream branch of your current branch does not match the name of your current branch. To push to the upstream branch on the remote, use git push origin HEAD:use_local_cache_v1 To push to the branch of the same name on the remote, use git push origin test $ git push origin HEAD:use_local_cache_v1 Total 0 (delta 0), reused 0 (delta 0) remote:

对我有效的命令是

$git push origin HEAD:use_local_cache

(希望你们能尽快走出困境)

我也遇到过同样的问题。因为我没有对暂存区进行更改。 我直接尝试使用命令将代码推到远程回购:

Git push origin master

它会显示最新的信息。

要解决这个问题,请尝试以下步骤

Git添加。 git commit -m Bug修复 Git push -u origin master

我也遇到过类似的情况;当我做出改变并试图 Git push origin master,它说一切都是最新的。

我必须git添加更改后的文件,然后git push origin master。从那时起,它就开始工作了。

另一种需要注意的重要情况是:git的默认状态是您正在“master”分支中工作。在很多情况下,您只需要将其作为主要的工作分支(尽管有些人会变得花哨并做其他事情)。

不管怎样,这只是一个分支。所以我可能会遇到这样的情况:

我的活动分支实际上不是主分支. ...但我习惯执行命令:git push(我之前已经做过git push origin master,所以这是一个快捷方式)。

所以我习惯性地将主分支推到共享回购…对我来说,这可能是一件干净的好事……

但是我已经忘记了我一直在做的改变还没有在主分支!!

因此,每次我尝试git push,当我看到“Everything up to date”时,我都想尖叫,但当然,这不是git的错!它是我的。

因此,我将我的分支合并到master中,然后执行push,一切都恢复正常。