我正在尝试从我正在合作的GitHub中提取一个项目,但是我收到以下错误:
您对以下文件的本地更改将被覆盖 合并
我试图合并: git mergetool {pathtofile}
但它只是响应“文件不需要合并”。
如果我首先尝试推送我的更改,我会收到:
To prevent you from losing history, non-fast-forward updates were rejected.
我可能会遗失什么?
答案 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)
你可以:
在拉动之前存储本地更改并在拉动后重新弹出本地更改:
git stash --include-untracked
git pull
git stash pop