如何强制执行 "git pull" 并覆盖本地文件?

9510

如何在执行 git pull 命令时强制覆盖本地文件?我的本地仓库中包含与服务器上相同文件名的文件。

错误:无法完成合并,未跟踪的工作树文件 'example.txt' 将被覆盖。


48
如果您正在阅读此内容并认为自己可能会丢失文件,我曾经遇到这种情况,并发现Sublime Text的缓冲区保存了我的工作 - 如果我在某个项目上工作时,意外删除了所有内容,尝试解决类似于这个问题或使用此问题的答案,并且已经在Sublime中打开这些文件(有很大的可能性),那么文件仍将存在于Sublime中,可能是在其中,也可能在撤销历史记录中。 - Toni Leigh
303
重置当前分支到与远程分支origin/branch_to_overwrite相同的状态,包括代码和提交记录。命令为:git reset --hard origin/branch_to_overwrite - Andrew Atkinson
5
基本上,在初始的checkout -b之后,只需从develop分支进行一次pull操作,然后进行你的工作,完成后再将更改push回去。 - ldgorman
5
简短回答:删除并重新创建分支。
  1. 删除分支: git branch <branch> -D
  2. 重置到冲突之前的提交: git reset <commit> --hard
  3. 重新创建分支: git branch <branch>
  4. 设置跟踪服务器: git --set-upstream-to=origin/<branch> <branch>
  5. 拉取:git pull
- Nino Filiu
6
将所有的CRLF行尾符改为LF(以干净的方式开始),请执行以下操作:git config core.autocrlf false; git ls-files -z | xargs -0 rm; git checkout . - Chloe
显示剩余6条评论
53个回答

0

步骤1(可选)
从本地存储库的根目录开始,保存备份并清空当前文件夹

mkdir -p ../<branch>-bkp && mv --backup=t * ../<branch>-bkp

步骤2。从远程仓库下载分支的所有文件和文件夹:

git checkout <branch> && git add -A . && git reset --hard origin/<branch> && git pull

你应该将<branch>替换为你想要覆盖的分支的名称。

注释:

  • 你可以选择手动备份并删除当前文件和文件夹,而不是执行步骤1。
    实际上,我建议使用操作系统GUI中的文件处理程序来完成此操作。
  • 如果跳过步骤1,请注意:您将失去本地存储库中的所有工作!
  • 重要提示:如果在步骤2中省略git pull
    您有可能无法从远程存储库获取最新版本
    根据下面的第二个参考文献,git reset --hard
    重置暂存区和工作目录以匹配最近的提交
    我的经验与这种说法相矛盾!
  • 如果您在未首先从本地存储库中删除所有文件和文件夹的情况下运行git reset --hard origin/<branch_to_overwrite>,请注意,任何仍然存在的垃圾文件都可能在稍后的git push中潜入远程存储库,即使这不是您的意图。
    在选择省略步骤1的情况下,额外的git add -A .可以防止这种情况发生。

References:
https://gitforwindows.org/
https://www.atlassian.com/git/tutorials/undoing-changes/git-reset
https://www.atlassian.com/git/tutorials/rewriting-history/git-reflog


-1

我尝试了这里大部分的方法,但都不适用于我的情况。

有效的方法是git merge -X theirs


-4
你可以尝试使用 git pull --force 或者通过使用 git stash 将你的提交暂存起来,然后再运行 git pull

2
这个不行。fatal: refusing to merge unrelated histories - Wyck
2
Automatic merge failed; fix conflicts and then commit the result. - Mutoh
2
没有问题:“错误:合并时将覆盖以下未跟踪的工作树文件:” - 我不关心那些文件。如果只有两三个,我会直接删除它们。但是这么多文件就不行了。 - Martin
3
这对我来说很好用!发生了什么事? - EyesBear

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接