我有一个远程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发布于 2009-06-16 07:32:55
你是不是碰巧在用detached head?
如下所示:

表示您的最新提交不是分支头。
警告:以下代码执行git reset --hard:如果要保存当前修改的文件,请确保首先使用。
$ git log -1
# note the SHA-1 of latest commit
$ git checkout master
# reset your branch head to your previously detached commit
$ git reset --hard <commit-id>正如在git checkout man page中提到的(重点是我的):
有时,能够出一个不在某个分支顶端的提交是很有用的。
最明显的例子是在标记的官方发布点检查提交,如下所示:
$ git checkout v2.6.18git的早期版本不允许这样做,并要求您使用-b选项创建一个临时分支,但从版本1.5.0开始,上面的命令会将您的git从当前分支中分离出来,并直接指向由标记(在上面的示例中为v2.6.18)命名的提交。
在此状态下,您可以使用所有git命令。
例如,您可以使用git reset --hard $othercommit进一步移动。
可以在分离的HEAD之上进行更改并创建新的。
您甚至可以使用git merge $othercommit创建合并。
当你的头被分离时,你所处的状态不会被任何分支记录下来(这是很自然的-你不在任何分支上)。
这意味着您可以通过切换回现有的分支(例如git checkout master)来丢弃您的临时提交和合并,随后的git prune或git gc将对它们进行垃圾收集。
如果你做错了,你可以问reflog你在哪里,例如
$ git log -g -2 HEAD发布于 2012-05-20 04:06:01
错误..。如果你是一个git新手,你确定你在git push之前使用了git commit吗?我第一次就犯了这个错误!
发布于 2015-03-11 00:32:03
也许你正在推动一家新的本地分支机构?
必须显式推送新的本地分支:
git push origin your-new-branch-name只是关于git的其中一件事...你克隆一个repo,创建一个分支,提交一些更改,推送...“一切都是最新的”。我理解为什么会发生这种情况,但这种工作流程对新手来说非常不友好。
https://stackoverflow.com/questions/999907
复制相似问题