如何忽略关于我的本地更改的'git pull'上的错误将被合并覆盖?
如何在Git pull上忽略以下错误消息?
合并将覆盖对以下文件的本地更改
如果我想覆盖它们怎么办?
我尝试过像git pull -f这样的东西,但没有任何效果。
要清楚,我只想覆盖特定的变化,而不是一切。
mae asked 2019-01-04T19:44:47Z
25个解决方案
327 votes
如果要从工作副本中删除所有本地更改,只需将其存储:
git stash save --keep-index
如果你不再需要它们了,你现在可以放下那个藏匿处:
git stash drop
如果您只想覆盖本地更改的特定部分,则有两种可能性:
提交您不想覆盖的所有内容,并使用上面的方法来完成剩下的工作。
使用git checkout path/to/file/to/revert进行要覆盖的更改。 确保该文件未通过git reset HEAD path/to/file/to/revert暂存。
Daniel Hilgarth answered 2019-01-04T19:45:22Z
249 votes
好的,在其他两个答案的帮助下,我想出了一个直接的解决方案:
git checkout HEAD^ file/to/overwrite
git pull
mae answered 2019-01-04T19:45:44Z
136 votes
这对我来说可以覆盖所有本地更改,并且不需要身份:
git reset --hard
git pull
kravits88 answered 2019-01-04T19:46:06Z
68 votes
这是一个抛弃分阶段变化的解决方案:
git reset file/to/overwrite
git checkout file/to/overwrite
Aftershock answered 2019-01-04T19:46:28Z
50 votes
您可以在执行合并之前提交更改,也可以存储它们:
git stash pop
git stash pop
git stash pop
Suneel Kumar answered 2019-01-04T19:47:00Z
32 votes
我解决这个问题的解决方案是:
git checkout --
然后我可以使用以下方法覆盖该文件:
git pull
pabloasc answered 2019-01-04T19:47:28Z
11 votes
如果您的存储库包含从git checkout -b newbranch中删除的一些文件:
git checkout -b newbranch
git checkout -b newbranch
git checkout -b newbranch
git checkout -b newbranch
Nikhil K R answered 2019-01-04T19:48:01Z
8 votes
在最近的Git中,您可以在git clean -fd命令上添加git stash/git reset HEAD --hard,以便在获取后在上游分支的顶部重新绑定当前分支。 警告应该消失,但是你可能会遇到一些你需要解决的冲突。
或者你可以用力检查不同的分支,然后再回到git stash,例如:
git checkout origin/master -f
git checkout master -f
然后像往常一样再次拉它:
git pull origin master
使用此方法可以节省您从存储(git stash)和潜在的权限问题,重置文件(git reset HEAD --hard),删除文件(git clean -fd)等时间。此外,它更容易记住。
kenorb answered 2019-01-04T19:48:43Z
7 votes
这个问题是因为您已经在文件/本地进行了更改,并且存在与Git存储库中的更改相同的文件,因此在拉/推之前,您需要存储本地更改:
要覆盖单个文件的本地更改:
git reset file/to/overwrite
git checkout file/to/overwrite
要覆盖所有本地更改(所有文件中的更改):
git stash
git pull
git stash pop
此问题可能是因为您处于未与主分支合并的分支上。
BSB answered 2019-01-04T19:49:24Z
6 votes
有时,这些都不起作用。 令人讨厌的是,由于我认为LF的事情,将会删除文件,然后拉动。 不是我推荐这个解决方案,但是如果文件不存在,git将无法通知您,您的更改(甚至可能不会更改)将被覆盖,并且会让您继续。
使用风险由您自己承担。
Jeremy Holovacs answered 2019-01-04T19:49:53Z
4 votes
您可以使用它来覆盖文件
git checkout file_to_overwrite
Deepika Patel answered 2019-01-04T19:50:15Z
3 votes
如果您想覆盖特定的更改,您需要一些方法告诉它您想要忘记哪些更改。
您可以尝试使用git stash --patch选择性地存储您要放弃的更改,然后使用git stash drop删除该存储。然后,您可以拉入远程更改并正常合并它们。
Will Vousden answered 2019-01-04T19:50:44Z
3 votes
解决此问题的最佳方法是:
git checkout --
之后,您可以通过以下方式覆盖该文件:
git pull origin master
A H M Forhadul Islam answered 2019-01-04T19:51:15Z
3 votes
git stash save --keep-index对我不起作用。
下面的命令按预期工作。
git reset --hard
git pull
如果您不需要它,它会覆盖所有本地更改。
Khemraj answered 2019-01-04T19:51:49Z
2 votes
我有一个特殊情况:我有一个文件,其中包含--assume-unchanged。 由于git status命令未显示任何更改,因此很难找到
Arkadiy answered 2019-01-04T19:52:11Z
2 votes
这对我来说可以放弃对实时远程服务器的更改并从源代码控制GitHub中拉出:
git reset --hard
git pull origin master
Gajen Sunthara answered 2019-01-04T19:52:33Z
2 votes
这是我解决问题的策略。
问题陈述
我们需要对10个以上的文件进行更改。 我们尝试了stash,但是Git喊道:
错误:将覆盖对以下文件的本地更改 合并:请尽可能提交您的更改或存储它们 合并。
我们尝试执行stash然后执行pull,但它们也没有工作。
解
实际上我们处于肮脏的阶段,因为文件位于“暂存区”a.k.a“索引区”,有些则位于“Head Area”a.k.a“本地Git目录”中。 我们想从服务器中提取更改。
以明确的方式检查此链接以获取有关Git不同阶段的信息:GIT阶段
我们按照以下步骤操作
stash(这使我们的工作目录变得干净。您的更改由Git存储在堆栈中)。
stash(从服务器拉取更改)
stash(应用堆栈中的所有更改)
stash(承诺更改)
stash(将更改推送到服务器)
stash(放弃堆栈)
让我们了解您何时以及为何需要藏匿
如果你处于脏状态,意味着你正在对文件进行更改,然后由于任何原因你被迫拉或转到另一个分支进行一些非常紧急的工作,所以此时你不能拉或 切换,直到您提交更改。 stash命令可以帮助您。
从ProGIT第二版出版:
通常情况下,当你在项目的一部分工作时,事情就会发生 一个混乱的状态,你想切换分支一点点工作 别的。 问题是,你不想做提交 半完成的工作,以便您稍后可以回到这一点。该 回答这个问题的是git stash命令。 Stashing需要 工作目录的脏状态 - 即您修改的跟踪状态 文件和分阶段的更改 - 并将其保存在未完成的堆栈中 您可以随时重新申请的更改。
STK answered 2019-01-04T19:54:47Z
2 votes
如果要在服务器上保留生产更改,只需合并到新配置项中。 处理方法如下:
git stash
git pull
git stash pop
也许你没有执行所有操作。 你可以知道接下来你能做什么。
YanQing answered 2019-01-04T19:55:16Z
1 votes
我在我的仓库中忽略了一个文件,当我做了git checkout myfile.js时,我收到以下错误:
错误:合并将覆盖对以下文件的本地更改: myfile.js 请在合并之前提交更改或存储更改。 中止
要解决它,我做了以下
git update-index --no-assume-unchanged myfile.js
然后我做了git checkout myfile.js并收到了这条消息
在分支主机上你的分支是4个提交后面的'origin / master', 并且可以快进。 (使用“git pull”更新您的本地 科)
未提交更改的更改:(使用“git add ...”进行更新 什么将被承诺)(使用“git checkout - ...”丢弃 工作目录的变化)
修改:myfile.js
没有更改添加到提交(使用“git add”和/或“git commit -a”)
然后我做了git checkout myfile.js,然后是git pull upstream master.这次git pull操作成功了。
Dmitry answered 2019-01-04T19:56:32Z
1 votes
从主人那里拉我时遇到了这个。
我使用Visual Studio处理它的方式;
首先,我在我的解决方案上执行了撤消提交。
然后我做了Git拉动过程。
希望这可以帮助!
AJ Macapaz answered 2019-01-04T19:57:19Z
1 votes
git reset --hard && git clean -df
这将重置并删除任何未跟踪的文件。
Yamen Ashraf answered 2019-01-04T19:57:47Z
0 votes
如果此错误是由于行结尾,
git add
git checkout mybranch
将工作。 我不确定它为什么会起作用。
user60561 answered 2019-01-04T19:58:15Z
0 votes
对于Pycharm,你可以做Git - > Revert然后拉。
Munichong answered 2019-01-04T19:58:37Z
0 votes
如果使用git-lfs并且文件指针被实际文件覆盖,也会发生此消息。
然后你用:
git stash
git lfs migrate import
git pull
从我的情况完整输出
λ git stash
Saved working directory and index state WIP on master: 5d4ad47 Merge branch 'feature/...' into 'master'
Encountered 1 file(s) that should have been pointers, but weren't:
public/apple-touch-icon.png
λ git pull
Updating 5a4ad44..b25f79d
error: Your local changes to the following files would be overwritten by merge:
public/apple-touch-icon.png
Please commit your changes or stash them before you merge.
Aborting
λ git lfs migrate import
migrate: Fetching remote refs: ..., done
migrate: Sorting commits: ..., done
migrate: Rewriting commits: 100% (0/0), done
migrate: Updating refs: ..., done
migrate: checkout: ..., done
λ git pull
Updating 5d4ad47..a25c79a
Fast-forward
public/apple-touch-icon.png | Bin 2092 -> 130 bytes
public/favicon.ico | Bin 6518 -> 1150 bytes
2 files changed, 0 insertions(+), 0 deletions(-)
见[https://github.com/git-lfs/git-lfs/issues/2839]
c33s answered 2019-01-04T19:59:18Z
0 votes
我已经尝试并成功,在拉动之前,让我们提交你尚未提交的所有文件,然后你就不会从AS收到那些消息。
Ta Quang Tu answered 2019-01-04T19:59:40Z