How do I ignore an error on 'git pull' about my local changes would be overwritten by merge?
如何忽略git pull上的以下错误消息?
Your local changes to the following files would be overwritten by merge
如果我想覆盖它们呢?
我试过像
明确地说,我只想覆盖特定的更改,而不是全部。
如果要从工作副本中删除所有本地更改,只需将其存储:
1 | git stash save --keep-index |
如果你不再需要它们,你现在可以放下那些东西:
1 | git stash drop |
如果只覆盖本地更改的特定部分,有两种可能:
提交您不想覆盖的所有内容,然后对其余部分使用上面的方法。
对于要覆盖的更改,请使用
好吧,在其他两个答案的帮助下,我提出了一个直接的解决方案:
1 2 | git checkout HEAD^ file/to/overwrite git pull |
这对我来说可以覆盖所有本地更改,并且不需要标识:
1 2 | git reset --hard git pull |
这里有一个解决方案可以丢弃阶段性的更改:
1 2 | git reset file/to/overwrite git checkout file/to/overwrite |
您可以在合并之前提交您的更改,也可以将其存储:
如果要放弃对一个文件的本地更改,可以执行以下操作:
1 | git checkout -- <file> |
然后您可以用最新版本覆盖文件,只需执行以下操作:
1 | git pull |
如果您的存储库包含一些从
在最近的git中,您可以在
或者,您可以强制签出不同的分支,然后再次返回到
1 2 | git checkout origin/master -f git checkout master -f |
然后像往常一样再拉一次:
1 | git pull origin master |
使用此方法可以节省存储(
有时,这些都不起作用。令人恼火的是,由于我认为的事情,将工作删除文件,然后拉。不是我推荐这个解决方案,但是如果文件不存在,Git不会毫无用处地通知您,您的更改(甚至可能不是更改)将被覆盖,并允许您继续。
自担风险使用。
这个问题是因为您在本地对文件进行了更改,并且在Git存储库中存在相同的文件,所以在"拉/推"之前,您需要存储本地更改:
要覆盖单个文件的本地更改:
1 2 | git reset file/to/overwrite git checkout file/to/overwrite |
要覆盖所有本地更改(所有文件中的更改):
1 2 3 | git stash git pull git stash pop |
另外,这个问题可能是因为您所在的分支没有与主分支合并。
埃多克斯一〔11〕没有为我工作。
下面的命令按预期工作。
1 2 | git reset --hard git pull |
如果不需要,它会覆盖所有本地更改。
这对我来说很有用,可以放弃实时远程服务器上的更改并从源代码管理github中提取:
1 2 | git reset --hard git pull origin master |
您可以将其用于覆盖文件
1 | git checkout file_to_overwrite |
这是我解决这个问题的策略。
问题陈述
我们需要在10多个文件中进行更改。我们试了一下
error: Your local changes to the following files would be overwritten
by merge: Please, commit your changes or stash them before you can
merge.
我们试图先执行
解决方案
实际上,我们正处于肮脏的阶段,因为文件在"临时区域"a.k.a"索引区域"中,而有些文件在"头区域"a.k.a"本地Git目录"中。我们想从服务器中提取更改。
请查看此链接,以清楚地了解git的不同阶段的信息:git阶段
我们遵循以下步骤
git stash (这使我们的工作目录变得干净。您的更改按git存储在堆栈中)。git pull origin master (从服务器中提取更改)git stash apply (应用堆栈的所有更改)git commit -m 'message' (承诺变更)git push origin master (将更改推送到服务器)git stash drop (放下堆栈)
让我们理解你需要藏匿的时间和原因
如果您处于不干净的状态,意味着您正在对文件进行更改,然后由于任何原因,您被迫拉入或切换到另一个分支进行一些非常紧急的工作,因此此时在提交更改之前,您无法拉入或切换。以东十一〔九〕司令部是来帮忙的。
摘自《程序》第2版:
Often, when you’ve been working on part of your project, things are in
a messy state and you want to switch branches for a bit to work on
something else. The problem is, you don’t want to do a commit of
half-done work just so you can get back to this point later. The
answer to this issue is the git stash command. Stashing takes the
dirty state of your working directory – that is, your modified tracked
files and staged changes – and saves it on a stack of unfinished
changes that you can reapply at any time.
解决这个问题的最佳方法是:
1 | git checkout -- <path/file_name> |
之后,您可以通过以下方式覆盖该文件:
1 | git pull origin master |
如果您想覆盖特定的更改,您需要某种方法来告诉它您想忘记哪些更改。
您可以尝试选择性地存储您想使用
这将重置和删除任何未跟踪的文件。
我有一个特殊的案例:我有一个文件——假设没有改变。很难定位,因为
如果要在服务器上保留生产更改,只需合并到新的配置项中。处理方法如下:
1 2 3 | git stash git pull git stash pop |
也许你没有执行所有的操作。你知道下一步该怎么做。
我在从主人那里拉车时遇到了这个。
我使用Visual Studio处理它的方式;
希望这有帮助!
我忽略了我的报告中的一个文件,当我执行
error: Your local changes to the following files would be overwritten by merge:
myfile.js
Please, commit your changes or stash them before you can merge.
Aborting
为了解决这个问题,我做了以下工作
1 | git update-index --no-assume-unchanged myfile.js |
然后我做了
On branch master Your branch is behind 'origin/master' by 4 commits,
and can be fast-forwarded. (use"git pull" to update your local
branch)Changes not staged for commit: (use"git add ..." to update
what will be committed) (use"git checkout -- ..." to discard
changes in working directory)modified: myfile.js
no changes added to commit (use"git add" and/or"git commit -a")
然后我做了
我从vim编辑器命令行中得到了执行:pluginupdate命令的相同错误消息
"Please commit your changes or stash them before you merge"
1。只是物理删除了包含插件的文件夹
1 | rm -rf ~/.vim/bundle/plugin-folder/ |
2。并从VIM命令行重新安装:plugininstall!因为my~/.vimrc包含了将插件构建到该目标的说明:
这创建了正确的文件夹,并将新的包放入该文件夹~./.vim/bundle/reinstalled plugins文件夹。"!"签名(由于pluginupdate命令不成功)被改为"+"符号,之后pluginupdate命令生效。
如果此错误是由行尾引起的,
1 2 | git add git checkout mybranch |
会工作。我不太清楚为什么它会起作用。
对于pycharm,您可以执行git->还原然后拉。
如果使用
然后使用:
1 2 3 | git stash git lfs migrate import git pull |
我案例的全部输出
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | λ 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
我已经尝试过了,而且它成功地完成了,在提取之前,让提交您尚未提交的所有文件,然后您将不会从AS收到这些消息。