2013-02-15 83 views
0

我在GitHub上创建了一个Git存储库,也创建了本地存储库。首先,我将远程存储库放入本地存储库。然后,我添加了一个文件,上演文件,提交它,现在我再次尝试做推到远程存储库,但它失败,此消息:使用Git for Windows推送到GitHub时出错

Pushing to https://github.com/jjenkov/java-utils 
To https://github.com/jjenkov/java-utils 
! [rejected]  master -> master (non-fast-forward) 
error: failed to push some refs to 'https://github.com/jjenkov/java-utils' 
hint: Updates were rejected because the tip of your current branch is behind 
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull') 
hint: before pushing again. 
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

我完全新的Git和Github上,所以也许我做错了什么。虽然远程仓库应该是空的(除了由GitHub生成的自述文件),我已经将远程仓库“提取”到本地仓库。

有谁知道问题是什么,或者我可以在哪里阅读解决方案?

回答

1

远程仓库不是空的;它包含您可能通过GitHub Web界面创建的README。你必须把它之前,你可以把它:

git pull --rebase origin master 
git push 

(该--rebase并非绝对必要,但避免了一个丑陋的合并提交。)

0

非快速向前推进意味着远程master是不是您当地master的祖先。 Git拒绝将其作为一种安全机制来防止破坏工作。

git log --graph --decorate --pretty=oneline --abbrev-commit --all的输出将为您提供存储库历史记录的图形化描述。如果你确信你不介意更换或摧毁的是在GitHub上,运行

$ git push --force origin master 

--force选项被记录为(带强调)

-f--force
通常,该命令拒绝更新远程ref,该远程ref不是本地ref的祖先,用于覆盖它。该标志禁用 检查。 这可能会导致远程存储库丢失提交; 小心使用它。

为了保留那里的内容,您需要在GitHub上重新绑定本地主服务器,然后推送结果。

$ git fetch 
$ git rebase origin/master master 
$ git push origin master 

或只是

$ git checkout master 
$ git pull --rebase 

上面的序列是晴天的情况。您可能需要解决冲突,但根据您的描述看起来似乎不太可能。

+0

后三个命令相当于'pull --rebase'。 – 2013-02-15 19:41:44