如何忽略Git pull上的以下错误消息?
您对以下文件的本地更改将被合并覆盖
如果我想覆盖它们怎么办?
我试过像git pull-f这样的方法,但没有任何效果。
要明确的是,我只想覆盖特定的更改,而不是所有更改。
如何忽略Git pull上的以下错误消息?
您对以下文件的本地更改将被合并覆盖
如果我想覆盖它们怎么办?
我试过像git pull-f这样的方法,但没有任何效果。
要明确的是,我只想覆盖特定的更改,而不是所有更改。
如果您想从工作副本中删除所有本地更改(包括未被git跟踪的文件),只需将其隐藏:
git stash push --include-untracked
如果你不再需要它们,你现在可以放下这些东西:
git stash drop
如果您不想隐藏已经暂存的更改(例如使用gitadd),那么添加选项--keep-index。然而,请注意,如果这些阶段性的更改与上游的更改发生冲突,这仍然会阻止合并。
如果您只想覆盖本地更改的特定部分,有两种可能:
提交您不想覆盖的所有内容,其余部分使用上面的方法。对于要覆盖的更改,请使用git checkout path/to/file/to/revert。确保文件未通过git reset HEAD path/to/file/to/revert暂存。
如果你想覆盖特定的更改,你需要一些方法告诉它你想忘记哪些更改。
您可以尝试使用gitstash-patch选择性地隐藏您想要放弃的更改,然后使用gitstash drop删除该更改。然后,您可以按正常方式拉入远程更改并合并它们。
如果要放弃对一个文件的本地更改,可以执行以下操作:
git checkout -- <file>
然后,您可以使用最新版本覆盖文件,只需执行以下操作:
git pull
有时,这些都不起作用。令人恼火的是,由于LF的事情,我认为,将工作的是删除文件,然后拉。我并不建议使用此解决方案,但如果文件不存在,git不会毫无用处地通知您,您的更改(甚至可能不是更改)将被覆盖,并允许您继续。
使用风险自负。
在最近的Git中,您可以添加-r/--rebase on pull命令,以在提取后将当前分支重新置于上游分支之上。警告应该会消失,但有可能会出现一些需要解决的冲突。
或者,您可以强制检查不同的分支,然后再次返回主分支,例如:
git checkout origin/master -f
git checkout master -f
然后像往常一样再次拉动:
git pull origin master
使用此方法可以节省时间,避免隐藏(git stash)和潜在的权限问题、重新设置文件(git reset HEAD--hard)、删除文件(gitclean-fd)等。
这对我来说很有用,我可以放弃实时远程服务器上的更改,并从源代码控制GitHub中提取:
git reset --hard
git pull origin master
我忽略了我的repo中的一个文件,当我执行git pull upstream master时,我得到了以下错误:
错误:您对以下文件的本地更改将被合并覆盖:myfile.js请在合并之前提交更改或将其隐藏。正在中止
为了解决这个问题,我采取了以下措施
git update-index --no-assume-unchanged myfile.js
然后我做了git状态并得到了这条消息
在分支主机上您的分支落后于“origin/master”4次提交,并且可以被快速转发。(使用“git pull”更新本地分支)未提交的更改:(使用“git add…”更新将提交什么)(使用“gitcheckout--…”放弃工作目录中的更改)修改:myfile.js未向提交添加任何更改(使用“gitadd”和/或“gitcommit-a”)
然后我执行git checkout myfile.js,然后执行git pull upstream master。这次git拉动操作成功。
解决此问题的最佳方法是:
git checkout -- <path/file_name>
之后,您可以通过以下方式覆盖文件:
git pull origin master
这是我解决问题的策略。
问题陈述
我们需要对10多个文件进行更改。我们尝试了PULL(git PULL origin master),但git喊道:
错误:您对以下文件的本地更改将被覆盖通过合并:请先提交更改或将其隐藏合并
我们尝试执行commit,然后执行pull,但它们也不起作用。
解决方案
实际上,我们处于肮脏的阶段,因为这些文件位于“暂存区”,也就是“索引区”,有些文件位于“头部区”,即“本地Git目录”。我们想从服务器中提取更改。
查看此链接,以明确方式获取有关Git不同阶段的信息:Git阶段
我们遵循以下步骤
git stash(这使我们的工作目录变得干净。您的更改通过git存储在堆栈中)。git pull-origin master(从服务器中拉取更改)git stash apply(应用堆栈中的所有更改)gitcommit-m“message”(已提交更改)git推送原始主机(将更改推送到服务器)git stash drop(删除堆栈)
让我们了解您何时以及为什么需要隐藏
如果您处于脏状态,则意味着您正在对文件进行更改,然后由于任何原因,您被迫拉入或切换到另一个分支以进行一些非常紧急的工作,因此此时,在提交更改之前,您无法拉入或转换。隐藏命令在这里作为帮助。
摘自ProGIT,第2版:
通常,当你在项目的一部分工作时一个混乱的状态,你需要切换分支来处理其他东西。问题是,你不想完成了一半的工作,这样你就可以稍后回到这一点。这个这个问题的答案是gitstash命令。Stashing需要工作目录的脏状态–即修改后的跟踪文件和暂存更改–并将其保存在未完成的堆栈中您可以随时重新应用的更改。
如果要在服务器上保留生产更改,只需合并到新的配置项中即可。处理方法如下:
git stash
git pull
git stash pop
也许你没有执行所有操作。你可以知道下一步可以做什么。
我从主人那里拉车时遇到了这种情况。
我使用Visual Studio处理它的方式;
首先,我对解决方案执行了撤销提交。然后我做了Git拉取过程。
希望这有帮助!
这个问题是因为您在本地对文件进行了更改,并且Git存储库中存在相同的文件,因此在拉/推之前,您需要隐藏本地更改:
要覆盖单个文件的本地更改,请执行以下操作:
git reset file/to/overwrite
git checkout file/to/overwrite
要覆盖所有本地更改(所有文件中的更改):
git stash
git pull
git stash pop
此外,此问题可能是因为您所在的分支未与主分支合并。
如果使用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
git-stash-save——保持索引对我不起作用。
下面的命令按预期工作。
git reset --hard
git pull
如果您不需要,它会覆盖所有本地更改。
我是git新手,不确定我的解决方案是否是个好主意。
我测试了所有答案,但没有一个对我有用!
但我找到了另一个解决方案:
1. Backup both of local and repository versions of the file.
2. Delete the file from repository.
3. git add .
4. git commit
5. git push
希望这有帮助。
出现错误“您对以下文件的本地更改将被合并覆盖”,因为您在本地回购中有一些尚未提交的更改,因此在从远程回购中提取之前,只需提交本地回购中的更改。
假设您的远程回购有一些分支xyz并且您希望将远程repo xyz分支合并到(复制到)本地repo xyx分支,
{
git checkout xyz //check out to the respective branch in local repo
git commit -m "commiting message" //commit changes if any, in local repo branch xyz
git pull //it pulls remote xyz branch into local xyz branch
}
这里有太多的答案,我不想再添加一个,但以上所有的答案都比它们需要的要笨拙。我必须一直这样做,因为Git似乎变得困惑,并表示我修改了未更改的文件(无法恢复,因为它们没有更改,但我无法拉动,因为它们应该已更改)。到目前为止,我发现最简单、最快的是:
git stash
git stash drop
git pull
注意:本地更改将丢失
git pull --rebase --autostash
-r、 --rebase[=false|true|合并|保留|交互式]如果为true,则在提取后的上游分支。如果有与上游相对应的远程跟踪分支
--autostash,--无autostash在开始重新基础之前,如果需要,并在完成后应用隐藏条目
我不知道为什么这个问题还没有答案,但正如你们所看到的,解决方法很简单。这里的所有答案都是相同的:删除/保存本地更改并应用到上游,然后(如果保存)在顶部应用本地更改。
git pull--rebase--autostash一步一步地做什么:
1. your local changes saved by `--autostash`
2. your local commits saved by `--rebase`
3. commits from upstream applied to your branch
4. your local commits are restored on top of upstream
5. your local changes are restored to working directory
我的案子(可能也是你的):
我有本地更改(工作目录中的更改):
当我尝试进行远程更改时,我收到错误:
这些更改与本地更改不相交:
因此,当我拉动--rebase--autostash时,保存并应用的本地更改不会自动出现任何问题
现在我的本地变化有点低:
试试这个
git fetch --all
git reset --hard origin/master
git pull origin master
对我来说,用力拉
由于您的分支位于xx提交的“origin/dev”之后,因此可以快速转发。请尝试以下命令:
git checkout .
git pullenter code here
希望这能解决你的问题。
实例
[root@localhost www]# git pull
Username for 'http://159.65.151.11': amol
Password for 'http://amol@159.65.151.11':
remote: Counting objects: 34, done.
remote: Compressing objects: 100% (34/34), done.
remote: Total 34 (delta 13), reused 0 (delta 0)
Unpacking objects: 100% (34/34), done.
From http://159.65.151.11/OpenCC
f793c8e..b8fe60c v1.18.0_24Feb2022 -> origin/_v1.18.0_24Feb2022
error: Your local changes to the following files would be overwritten by merge:
cc/routes/web.php
Please, commit your changes or stash them before you can merge.
Aborting
解决方案(忽略本地文件中已提交的更改)
git checkout HEAD^ cc/routes/web.php
git pull