当前位置: 首页 > 知识库问答 >
问题:

如何强制“git pull”覆盖本地文件?

陆和泰
2023-03-14

如何强制覆盖git拉上的本地文件

场景如下:

  • 一名团队成员正在修改我们正在开发的网站的模板

这是我遇到的错误:

错误:未跟踪的工作树文件“公共/图像/icon.gif”将被合并覆盖

如何强制Git覆盖它们?这个人是设计师——通常,我用手解决所有冲突,所以服务器有最新的版本,他们只需要在他们的计算机上更新。

共有3个答案

郁和通
2023-03-14

警告:git清洁删除所有未跟踪的文件/目录并且无法撤消。

有时,仅仅清洁f是没有帮助的。如果您有未跟踪的目录,还需要-d选项:

# WARNING: this can't be undone!

git reset --hard HEAD
git clean -f -d
git pull

警告:git清洁删除所有未跟踪的文件/目录并且无法撤消。

首先考虑使用-n--dry-run)标志。这将向您显示将删除哪些内容而无需实际删除任何内容:

git clean -n -f -d

示例输出:

Would remove untracked-file-1.txt
Would remove untracked-file-2.txt
Would remove untracked/folder
...
薄腾
2023-03-14

尝试以下操作:

git reset --hard HEAD
git pull

它应该做你想做的。

金宣
2023-03-14

如果您有任何未被Git跟踪的文件(例如上传的用户内容),这些文件不会受到影响。

首先,运行fetch以更新所有源/

git fetch --all

备份您当前的分支:

git branch backup-master

然后,你有两个选择:

git reset --hard origin/master

或者,如果您在其他分支机构:

git reset --hard origin/<branch_name>

git fetch(git fetch)从远程下载最新版本,而无需尝试合并或重新设置任何基础。

然后,git reset将主分支重置为您刚才获取的内容。“硬”选项会更改工作树中的所有文件,以匹配原始/主文件中的文件

[*]:值得注意的是,在重置之前,可以通过从主控创建分支来维护当前的本地提交:

git checkout master
git branch new-branch-to-save-current-commits
git fetch --all
git reset --hard origin/master

在此之后,所有旧提交都将保留在新分支中,以保存当前提交。

但是,未提交的更改(即使是阶段性的)将丢失。确保隐藏并提交任何你需要的东西。为此,您可以运行以下操作:

git stash

然后重新应用这些未提交的更改:

git stash pop
 类似资料:
  • 我想推送我的本地文件,并将它们放在远程存储库上,而不必处理合并冲突。我只想让我的本地版本优先于远程版本。 我怎样才能用Git做到这一点?

  • 问题内容: 是否可以强制重命名os.rename覆盖另一个文件(如果已经存在)?例如,在下面的代码中,如果文件Tests.csv已经存在,则将其替换为Tests.txt文件(该文件也已重命名为Tests.csv)。 问题答案: 您可以尝试: 或然后:

  • 我正在使用安装我的python代码,使用 当我想要将我的代码的旧分支安装在新分支之上时,我遇到了一些问题:不会覆盖旧文件。一种方法是触摸()所有文件,因此它们必须比安装的文件更新,但这是非常难看的。 我正在寻找的是一个选项,以强制覆盖所有文件,例如。类似于 有什么想法吗?

  • 我在学KINTER我有点困惑。下面的代码显示了face_recogniton()函数中的白色文本。 但文本重叠了。在显示新文本之前,如何清除它?

  • 问题内容: 我想要一个目录,但是我不想覆盖任何现有文件,即使它们比复制的文件还旧。我想做到完全非交互式,因为这将是Crontab Bash脚本的一部分。有任何想法吗? 问题答案: 从手册页中获取: 例:

  • 问题内容: 如何使dict的子类尽可能“完美” ?最终目标是要有一个简单的字典,其中的键是小写的。 看来应该有一些微小的原语可以重写以完成此工作,但是根据我的所有研究和尝试,似乎并非如此: 如果我覆盖,则get/ set不起作用。如何使它们工作?当然,我不需要单独实施它们吗? 我是否在阻止酸洗,我需要实施等吗? 我是否需要以及? 我应该只使用(似乎不应该使用)吗?如果是这样,怎么办?这些文档并不完