我有一个远程gitosis服务器和一个本地git存储库,每次我对我的代码进行重大更改,我都会将更改推送到该服务器 .
但是今天我发现即使我有一些本地更改并提交到本地存储库,当运行git push origin master时它会说'Everything up-to-date',但是当我使用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
19 回答
我遇到过类似的情况;当我做出改变并尝试
git push origin master
时,它说一切都是最新的 .我不得不_1124308_已更改的文件,然后
git push origin master
. 它从那时开始工作 .从您的git状态,您可能与我的情况不同 .
但无论如何,这就是我发生的事情..我遇到了以下错误:
这里提供的信息越多,遥控器就会挂断 . 原来它是由于超过http post缓冲区大小 . 解决方案是增加它
git config http.postBuffer 524288000
你不会有任何机会使用detached head?
如:
表明您的最新提交不是分支负责人 .
如git checkout man page中所述(强调我的):
呃..如果你是一个git noob,你确定你在
git push
之前有git commit
?我第一次犯了这个错误!也许你正在推动一个新的本地分支机构?
必须明确推送新的本地分支:
关于git的其中一个...你克隆一个仓库,做一个分支,提交一些变化,推动......“一切都是最新的” . 我理解为什么会这样,但这个工作流程对新手来说非常不友好 .
需要注意的另一个重要情况是:git的默认状态是你在“master”分支中工作 . 在很多情况下,你只是作为你的主要工作分支(尽管有些人喜欢并做其他事情) .
无论如何,那只是一个分支 . 所以我可能会遇到的情况是:
我的活动分支实际上不是主分支 . ...但我习惯性地执行命令:
git push
(我以前做过git push origin master
,所以它是这个的快捷方式) .所以我习惯性地将主分支推送到共享仓库......这可能是一件很干净的东西,在我看来......
但我忘记了我一直在努力的变化还没有进入主分支!
因此,每当我尝试
git push
,我看到"Everything up to date"时,我想要尖叫,但当然,这不是我的意思's fault! It' .所以相反,我将我的分支合并到主人,然后做推,然后一切都很开心 .
我的问题是我的本地分支的名称与远程分支的名称不同 . 我能够通过执行以下操作来推动:
$ git push origin local-branch-name:remote-branch-name
(感谢https://penandpants.com/2013/02/07/git-pushing-to-a-remote-branch-with-a-different-name/)
请参阅上面的VonC答案 - 我需要一个额外的步骤:
我做了这个,但是当我试着
git push remoterepo master
时,它说“错误:未能推送一些引用 . 为了防止你丢失历史记录,非快进更新被拒绝,合并远程更改(例如'git pull')然后再推 . “所以我做了'git pull remoterepo master',发现了冲突 . 我再次做了
git reset --hard <commit-id>
,将冲突的文件复制到备份文件夹,再次git pull remoterepo master
,将冲突的文件复制回我的项目,做了git commit
,然后git push remoterepo master
,这次它起作用了 .Git不再说“一切都是最新的” - 它停止抱怨“快速前进” .
解释
我有同样的错误,并花了几个小时试图找出它 . 最后我发现了它 . 我不知道的是像这样推动
git push origin branch-x
将尝试在本地搜索branch-x然后推送到远程branch-x .就我而言,我有两个远程网址 . 当我尝试从本地推送到x遥控器时,我从 branch-x 到 branch-y 进行了结账 . 我得到的消息一切都是最新的,这是正常的,因为我正在推送到第二个遥控器的x .
长话短说不要陷入这种陷阱,你需要指定源ref和目标ref:
我今天遇到了这个问题,并没有与任何其他答案有任何关系 . 这是我做了什么以及如何修复它:
我的一个存储库最近搬了,但我有一个本地副本 . 我分支了我的本地"master"分支并进行了一些更改 - 然后我记得存储库已经移动了 . 我使用
git remote set-url origin https://<my_new_repository_url>
来设置新的URL但是当我按下它时只会说"Everything up to date"而不是将我的新分支推送到master .我最终通过重新定位到
origin/master
然后使用显式分支名称来解决它,如下所示:我希望这可以帮助那些遇到同样问题的人!
我的错误与迄今为止提到的所有内容都不同 . 如果你不知道为什么你会有一个独立的头,那么你可能不会 . 我正在使用
git commit
和git push
进行自动驾驶,并且没有读取git commit
的输出 . 事实证明,这是一条错误消息,因为我忘记了-am .通过将
-am
放在我通常所做的位置来修复它:超级罕见 - 但仍然:在Windows上,可能是packed-refs有一个带有一个字母大小写的分支(即dev / mybranch),而当core.ignorecase设置为true时,refs文件夹有另一个大小写(即Dev / mybranch) .
解决方案是手动删除packed-refs中的相关行 . 没有找到更清洁的解决方案 .
确认您没有填写远程URL .
我只是想提一下,我在本地Jenkins构建配置中启用Git作为CVS后遇到了这个问题 . 似乎Jenkins检查了我给它的分支的最新提交,并且还重置了我的遥控器以对应于我将它提供给回购的路径 . 不得不再次检查我的功能分支并使用'git remote set-url'修复我的原始远程URL . 不要将构建工具指向您的工作目录,否则您将度过难关 . 我的远程设置为我的工作目录的文件路径,因此当我尝试使用相同的源和目标推送更改时,它自然会报告所有内容 .
另一种可能性是您在.gitignore文件中命名了一个被排除的目录 . 所以新提交不会被推送 . 我发现我命名了一个目录来忽略“搜索”,但这也是我的源代码树中的一个目录 .
当我在Github上合并一个分支并继续在本地开发时,我自己遇到了这个问题 . 我的修复与已建议的其他修改略有不同 .
首先,我从我的旧本地分支机构(我无法推动)分支出一个新的本地分支机构 . 然后我将新的本地分支推送到原始服务器(Github) . 即
这使得Github上出现了变化,尽管是在新的本地分支而不是旧的本地分支 .
我找到了一个快速的方法 . 转到.git文件夹,打开
HEAD
文件并将您所在的任何分支更改为master . 例如 . 参考:refs/heads/master
在我的情况下,我有2个远程回购 .
两个回购都是一样的 . 只有一个是
https
其他是ssh
. 所以删除不需要的一个,(在我的情况下ssh
. 因为我使用https
因为ssh
无效!)为我解决了这个问题 .我遇到过同样的问题 . 在我的情况下,这是由于必须为同一个遥控器的名称 . 它创造了标准的'起源',但我长期以来一直使用'github'作为我的遥控器,所以也就是这样 . 一旦我删除了'origin'遥控器,错误就消失了 .
我发生了这种情况(在我的git日志中提交虽然git说一切都是最新的,但我没有在GitHub上,我相信这个问题是Github . 我没有在git中收到任何错误消息,但是GitHub有状态错误,几小时后我的提交就出现了 .
https://status.github.com/messages
GitHub状态消息是:
我们正在调查服务不可用的报告 .
我们正在调查访问GitHub.com的问题 .
我们正在通过数据存储系统进行故障恢复,以恢复对GitHub.com的访问 .