【问题标题】: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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-20
      • 2011-10-29
      • 1970-01-01
      • 1970-01-01
      • 2017-08-13
      • 2012-10-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多