我试图将更改推送到我的NAS上的存储库。它以一种我不理解的方式失败了。
文档指出,默认情况下
push
仅适用于快进式更新。很好。所以我做了一个git pull
(我的远程称为rubix
):
D:\RoboCup\Dev\TinMan>git pull rubix master From ssh://rubix/volume1/git/TinMan * branch master -> FETCH_HEAD Already up-to-date.看起来一切都很好。让我们尝试推送...
D:\RoboCup\Dev\TinMan>git push rubix master 向 ssh://dnoakes@rubix/volume1/git/TinMan 推送失败! 错误:未能推送一些引用到 'ssh://dnoakes@rubix/volume1/git/TinMan' 为了防止您丢失历史记录,拒绝非快进式更新。 在再次推送之前,请合并远程更改。有关详细信息,请参见“git push --help”中的“有关快进”的部分。我已经阅读了关于
git push
的文档,但目前我无法理解为什么会出现这个问题。以下是其他上下文信息:
D:\RoboCup\Dev\TinMan>git --version git版本 1.7.0.2.msysgit.0
D:\RoboCup\Dev\TinMan>git branch *(无分支) 主要最后一行看起来可疑。我怎么可能没有任何分支?还请注意,我还有一些未跟踪的文件和修改(未暂存)的更改。
任何帮助都将不胜感激。谢谢。
git checkout master
是有意义的,但我现在回到了过去。我该做git merge <oldref>
吗? - Drew Noakesgit reflog
来尝试弄清楚之前你在哪里。假设你知道<oldref>
,并且 它是当前主分支的后代,那么你就可以使用git merge <oldref>
。确保输出包含 "Fast-forward"。否则,如果你正在创建一个合并提交(非直接后代),我建议首先为这些提交创建一个有用名称的专题分支。 - Rein Henrichs