从GitHub拉出时出错

时间:2011-09-25 11:49:30

标签: github

我正在尝试从我正在合作的GitHub中提取一个项目,但是我收到以下错误:

  

您对以下文件的本地更改将被覆盖   合并

我试图合并: git mergetool {pathtofile}

但它只是响应“文件不需要合并”。

如果我首先尝试推送我的更改,我会收到:

To prevent you from losing history, non-fast-forward updates were rejected.

我可能会遗失什么?

2 个答案:

答案 0 :(得分:4)

您在问题中引用了以下错误消息:

  

合并

会覆盖对以下文件的本地更改

此错误消息实质上是说git阻止您可能丢失工作。您的工作树中有一些尚未提交的更改,而pull会修改这些文件 - 这可能会导致您丢失本地更改。一旦您将更改提交到这些文件,拉动就会起作用。 (或者,您可以跳过git pull的“获取”阶段,然后再次运行git merge origin/master再次尝试合并阶段。)Martin Ogden's answer举例说明如何使用git stash作为替代方案,如果你还没有准备好提交你的工作,那就更合适了。

后一条错误消息是:

To prevent you from losing history, non-fast-forward updates were rejected.

基本上,如果您正在推送的提交已经包含您要推送的分支的历史记录,那么您只能被推送。通常的解决方案是先拉。这是另一条错误消息,它阻止您丢失工作 - 您(通常)不会想要消除其他人推送到该分支的工作。

答案 1 :(得分:1)

你可以:

  1. 在从远程存储库中提取之前添加/提交本地更改
  2. 在拉动之前存储本地更改并在拉动后重新弹出本地更改:

    git stash --include-untracked
    git pull
    git stash pop