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

它会显示最新的信息。

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

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

其他回答

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

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

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

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

Git配置http。postBuffer 524288000

在我的例子中,我有2个远程回购。

git remote -v
originhttps https://asim_kt@...
originhttps https://asim_kt@...
origin  ssh:git@bitbucket.org:...
origin  ssh:git@bitbucket.org:...

两次回购都是一样的。一个是https,另一个是ssh。因此,删除不需要的,(在我的情况下,ssh。因为我使用https,因为ssh不能工作!)为我解决了这个问题。

git branch -M <desired branch>

这招对我很管用。

我遇到过这样的情况,我在一个特征分支上,而我的同事也创建了他自己的特征分支。我运行git fetch -a,然后git push origin <coworkers_branch>。它一直告诉我一切都是最新的。

我通过检出到<coworkers_branch>,然后从我的特征分支中提取,然后提交并推回到<coworkers_branch>来修复它。

我真诚地希望这能帮助到一些人,因为我花了太多的时间在这上面。

我犯过的另一个非常简单却又愚蠢的错误:我只是忘记在提交时添加message -m修饰符。所以我写道:

git commit 'My message'

而不是正确的:

git commit -m 'My message'

注意:它不会抛出任何错误!但是你将不能推送你的提交,而总是让Everything更新