我有一个远程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 fetch -a,然后git push origin <coworkers_branch>。它一直告诉我一切都是最新的。

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

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

其他回答

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

另一种可能是您在.gitignore文件中命名了一个被排除的目录。这样新的提交就不会被推送。我碰巧命名了一个目录来忽略“search”,但那也是我源代码树中的一个目录。

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

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

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

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

git push origin your-new-branch-name

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

验证您没有篡改远程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.