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

当前回答

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

git commit 'My message'

而不是正确的:

git commit -m 'My message'

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

其他回答

在我的例子中,问题的原因是我在git bash中的符号链接文件夹中执行git推/拉命令! 我在一个git项目中的符号链接文件夹中指向另一个git项目,git的pull/push命令正在回答Everything - latest。 当我将(cd)移动到实际文件夹的路径(不是通过符号链接)时,git的推/拉命令起作用了。

也许你想在当地开一家新分公司?

必须显式地推送一个新的本地分支:

git push origin your-new-branch-name

这是关于少年犯的一件事…你克隆一个回购,创建一个分支,提交一些更改,推送…“一切都是最新的”。我理解为什么会发生这种情况,但这种工作流程对新人非常不友好。

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

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

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

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

我有多个遥控器。除了一个人以外,所有人都正确地推了,所以我知道我没有一个独立的头或提交问题。

结果,我不小心给了两个遥控器相同的URL。复制URL的远程失败,因为我正在推到一个已经被推到的URL !

使用git remote -v显示了我的远程列表和它们的url,在那里我意识到问题。

重置失败的远程到其正确的URL修复了这个问题: Git remote set-url <remote-name> <correct-url>

在我的例子中,我有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不能工作!)为我解决了这个问题。