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

问题描述 投票:2回答:2

找不到我的问题所以我想我会问。

我自己和另一个人正在研究这个回购。我的本地克隆是最新的。

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

我第二天来,做一个git状态(最新),然后git pull。它从我的本地仓库中删除'example.txt'。

问题是我需要该文件而我的合作伙伴不小心将其删除了。

我如何防止将来发生这种情况?在删除某些内容之前,有没有办法让git pull先警告我?

所以我尝试先做一个git fetch,然后是git status,但它没有显示我要删除一个文件,如果我合并。

git git-merge git-pull merge-conflict-resolution git-status
2个回答
0
投票

由于git pull基本上是git fetch,然后是git merge,有趣的是看到this比较这两个(fetch x merge),然后看看this strategy关于如何预览合并,因此,有些东西可以帮助你安全地进行pulling用git。


0
投票

您可以在执行master之后显示您的本地分支(例如master分支和远程git fetch分支)之间的所有差异:

$ 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是如何工作的。如果另一个用户已提交文件删除并将提交推送到远程分支,则此操作无法撤消,您无法忽略它 - 在将更改推送到远程之前,您必须迟早接受对本地主分支的更改。如果另一个用户无意中删除了该文件,您可以将其恢复并将其推送到远程,理想情况是在单独的提交中,或者还原另一个用户推送的提交。

© www.soinside.com 2019 - 2024. All rights reserved.