如何忽略的Git以下错误消息拉?
您当地的下列文件中的更改将被合并被覆盖
如果我想覆盖他们吗?
我已经试过之类的东西git pull -f
,但没有任何工程。
需要明确的是,我只希望覆盖特定的变化,而不是一切。
如果你想删除你的工作副本的所有本地更改,只需藏匿他们:
git stash save --keep-index
如果你不需要他们了,你现在可以丢弃藏匿处:
git stash drop
如果您想覆盖的本地更改只有特定的部位,有两种可能性:
git checkout path/to/file/to/revert
您要覆盖更改。确保文件不通过git reset HEAD path/to/file/to/revert
上演。git stash save --keep-index
并没有为我工作。
下面的命令都按预期。
git reset --hard
git pull
它覆盖所有地方的变化,如果你不需要他们。
这个问题是因为你所做的更改对本地文件/ s和相同的文件/秒,在Git仓库的变化存在,所以拉前/推你需要藏匿的局部变化:
要覆盖单个文件的局部变化:
git reset file/to/overwrite
git checkout file/to/overwrite
要覆盖所有的局部变化(在所有文件中的更改):
git stash
git pull
git stash pop
另外这个问题可能是因为你是在未与主分支合并的分支。
git reset --hard && git clean -df
这将重置并删除任何未跟踪文件。
你可以用这个覆盖文件
git checkout file_to_overwrite
解决这个问题的最好办法是:
git checkout -- <path/file_name>
之后,你可以通过覆盖该文件:
git pull origin master
这个工作对我来说丢弃现场远程服务器上进行更改,并从源头上控制拉GitHub的:
git reset --hard
git pull origin master
如果你想覆盖的具体变化,你需要告诉它你想忘记哪些的一些方法。
你可以尝试选择性地积攒要放弃使用git stash --patch
,然后丢弃与git stash drop
是藏匿的变化。然后,您可以拉远程更改并将其合并为正常。
这里是我的策略来解决这个问题。
问题陈述
我们需要在超过10个文件的变化。我们试图PULL (git pull origin master)
,但Git的喊道:
错误:您当地的下列文件中的更改将被合并覆盖:请提交更改或藏匿,然后才能合并。
我们试图执行commit
然后pull
,但他们也不能工作。
解
我们在肮脏的阶段实际上,因为文件中的“临时区域” a.k.a“索引区”,一些人在“头部区域” a.k.a“本地的Git目录”。我们想拉从服务器的变化。
检查此链接了解Git的不同阶段的信息以明确的方式:GIT Stages
我们遵循以下步骤
git stash
(这使我们的工作目录干净。你的变化是由的Git存储在堆栈上)。git pull origin master
(拉从服务器的更改)git stash apply
(应用了所有从栈变化)git commit -m 'message'
(所犯的变化)git push origin master
(推更改服务器)git stash drop
(删除该堆)我们先来了解何时以及为什么你需要积攒
如果你是在肮脏的状态,意味着你正在你的文件的更改,然后你是被迫的,由于某种原因,拉或切换到另一个分支一些非常紧迫的工作,所以在这一点上,你不能拉或切换,直到你提交你的改变。该stash
命令是这里作为一个伸出援助之手。
从书中ProGIT,第2版:
通常情况下,当你一直在做项目的一部分,东西都在一个混乱的状态,你想切换分支的位元对别的工作。问题是,你不想做承诺做了一半的工作,所以您可以回到这个点以后。这个问题的答案的问题是git的藏匿命令。积攒需要你的工作目录的脏状态 - 也就是说,修改后的跟踪文件和暂存的变更 - 并将其保存的,你可以在任何时候重新申请未完成的变化的堆栈。
我有这样一个特殊情况:我曾与它--assume未发生变化的文件。这是很难找到,因为git status
命令没有显示任何改变
如果你想在服务器上保留生产的变化,只是合并成一个新的配置项。的处理方法如下:
git stash
git pull
git stash pop
也许你不执行的所有操作。你可以知道你能下一步要做什么。
好了与其他两个答案,我想出了一个直接的解决方案的帮助:
git checkout HEAD^ file/to/overwrite
git pull
我忽略了我的回购协议文件,当我做了git pull upstream master
我得到了以下错误:
错误:您当地的下列文件中的更改将被合并覆盖:myfile.js请提交更改或藏匿,然后才能合并。中止
要解决它,我做了以下
git update-index --no-assume-unchanged myfile.js
然后我做了git status
和得到这个消息
在分支掌握你的分支是落后4个提交“起源/主”,可快进。 (使用“混帐拉”来更新你的本地分支)
没有上演更改承诺:(使用“混帐添加...”更新的内容将被提交)(使用“git的结帐 - ...”丢弃在工作目录的变化)
修改:myfile.js
没有变化加入到提交(使用“GIT中增加”和/或“git的承诺-a”)
然后我也git checkout myfile.js
其次git pull upstream master
。这一次git的拉操作成功。
从主拉,当我遇到了这一点。
我的方式来处理它,使用Visual Studio;
希望这可以帮助!
如果此错误是因为行尾的,
git add
git checkout mybranch
将工作。我真的不知道为什么它的工作原理。
对于Pycharm,你可以做的Git - >恢复,然后拉。
如果使用和文件指针是由一个真正的文件覆盖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(-)
我曾尝试和成功地拉动之前,让承诺,你有没有犯所有的文件,那么您将不会收到来自AS的消息。
最简单的解决方法是:
git reset --hard && git pull
这对我的作品覆盖所有本地变更,也不需要身份:
git reset --hard
git pull
下面是扔掉上演变化的解决方案:
git reset file/to/overwrite
git checkout file/to/overwrite
您可以提交更改你在合并之前,或者你藏匿它们:
git stash save
git merge origin/master
git stash pop
如果你想放弃上一个文件你的本地修改,你可以做到以下几点:
git checkout -- <file>
然后,你可以覆盖该文件[S]与最新版本只是在做:
git pull
如果你的资料库中包含有从master
删除一些文件:
git checkout master
git fetch origin
git reset --hard origin/master
git checkout -b newbranch
有时,所有这些工作。烦人,因为我觉得LF东西,什么工作被删除的文件,然后拉动。这并不是说我建议这个解决方案,但如果文件不存在,git会不会徒劳地通知您,您的改变(这可能甚至不变化)将得到覆盖,并会让你继续。
使用您自己的风险。
在最近的Git,你可以在-r
命令添加--rebase
/ pull
取后变基上游分支的顶部当前分支。警告应该消失,但你会得到一些冲突,你将需要解决的风险。
或者你可以检出不同的分支力量,然后回去再master
,例如:
git checkout origin/master -f
git checkout master -f
然后再次把它像往常一样:
git pull origin master
使用这种方法可以一次拯救你藏起来(git stash
)和潜在的权限问题,正在重置文件(git reset HEAD --hard
),删除文件(git clean -fd
)等。此外,上面很容易记住。