如何防止Git pull删除本地文件

4

找不到我的问题,所以我想问一下。

我和另一个人都在这个仓库里工作,我本地克隆是最新的。

我的合作伙伴删除了一个文件 "example.txt",并提交和推送了它。

第二天我进来,执行 git status(最新状态),然后执行 git pull。它会从我的本地仓库中删除 'example.txt'。

问题是我需要那个文件,而我的合作伙伴不小心删除了它。

如何防止这种情况再次发生?有没有办法让 git pull 在删除之前先警告我呢?

所以我首先尝试了 git fetch,然后是 git status,但如果我合并,它并不会显示我即将删除的文件。


为什么git rm --cached不能删除本地曾经被跟踪的文件,但可以删除其他文件? - LF00
2个回答

1
您可以在执行git fetch之后,显示本地分支(例如master分支)和远程master分支之间的所有差异,如下所示:
$ git diff ...origin/master
diff --git a/example.txt b/example.txt
deleted file mode 100644
index e69de29..0000000

在这一点上,您仍然在您的master上有example.txt文件,但是当您执行git merge时,它将被删除。出于习惯,我通常在最终将获取的更改合并到我的本地分支之前也会这样做。
然而,根据您描述问题的方式,似乎您并不真正了解git的工作原理。如果另一个用户提交了文件删除并将提交推送到远程分支,则此操作无法撤消,并且您无法忽略它 - 您必须在将更改推送到远程之前,迟早需要接受该更改到您的本地主分支中。如果另一个用户意外删除了该文件,则可以将其恢复并将其推送到远程,最好在单独的提交中或还原另一个用户已经推送的提交。

0
作为一个 git pull 基本上是一个 git fetch 接着再加上一个 git merge,这很有趣,可以看看关于这两个操作的比较(fetch x mergethis,然后看看this strategy有关如何预览合并的内容,因此,这可以帮助您安全地使用 git pull

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