【问题标题】:How to prevent Git pull from deleting local files如何防止 Git pull 删除本地文件
【发布时间】:2019-08-14 21:13:51
【问题描述】:
找不到我的问题,所以我想我会问。
我和另一个人正在处理这个 repo。我的本地克隆是最新的。
我的搭档删除了一个文件“example.txt”,提交并向上推。
我第二天来,执行 git status(最新),然后执行 git pull。它会从我的本地仓库中删除“example.txt”。
问题是我需要那个文件,而我的搭档不小心删除了它。
如何防止这种情况在未来发生?有没有办法让 git pull 在删除某些内容之前先警告我?
所以我尝试先执行 git fetch,然后执行 git status,但它并没有表明我要在合并后删除文件。
【问题讨论】:
标签:
git
git-merge
git-pull
merge-conflict-resolution
git-status
【解决方案1】:
您可以显示本地分支机构之间的所有差异,例如,
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是如何工作的。如果另一个用户已提交
文件删除并将提交推送到远程分支此操作
无法撤消,您也无法忽略它 - 您必须接受
迟早会更改为您的本地主分支
将您的更改推送到遥控器。如果其他用户已删除该
无意中的文件,您可以将其还原并将其推送到远程,
理想情况下,在单独的提交中或恢复另一个用户的提交
已经推送了。
【解决方案2】:
作为git pull 基本上是git fetch 后跟git merge,它是
有趣的是看到 this 比较这两个 (fetch x merge),然后看看 this strategy 关于如何预览合并,因此,一些可以帮助你的东西
pulling 安全地使用 git。