【问题标题】:How to get my local changes for "deleted by them" files in git?如何在 git 中获取“被他们删除”文件的本地更改?
【发布时间】:2013-10-30 20:57:53
【问题描述】:

我将一个远程分支合并到一个本地分支。 合并后,我得到“被他们删除”的文件。这意味着在远程分支中这些文件被删除了,但它们在本地分支中有更改,如果我也从本地分支中删除文件,这些更改将会丢失。

如何以每个文件的差异形式获取这些更改?只是想知道 - 我正在失去什么。

【问题讨论】:

  • 为什么不简单地将更改后的本地分支签出为新分支?这样,您可以切换回(记得先将更改提交到新创建的分支)到您的另一个分支进行远程合并,然后执行git diff merged_branch_name local_changes_branch_name
  • 我不明白你的意思。我绝对想做合并,我不会将所有更改保存在已删除文件中。我想知道 - 在实际合并提交之前 - 哪些更改会丢失:然后,我可能会忽略它们,或者可能会在新的地方重新实现它们,或者其他什么。
  • 我的建议只是实现您想要的差异的一种方法。或者,如果您坚持在 diff 之前不进行任何类型的合并,您可以尝试:git fetch(获取远程分支但 not 合并它)然后 git diff 使用远程(即remotes/origin/master,不仅仅是master之类的东西)作为参数。一旦满意,您就可以执行git merge。这有帮助吗?
  • 它没有帮助,因为git diff 给出了整个文件(本地)和什么都没有(远程)之间的区别。
  • 老实说,我仍然无法理解 which 提交你真正想要区分的内容。但是,如果我之前的提示没有产生您想要的差异,您可能想要查找本地分支中的更改与远程分支中的更改不同的共同祖先提交。然后,您应该针对本地分支 HEAD 和此祖先提交进行比较,以获得您想要的这些所谓的更改。也请参阅此 link,它可能比我更清楚。

标签: git conflict git-merge merge-conflict-resolution


【解决方案1】:

您可以使用Meldmerge 将您的更改与来自 repo 的传入更改进行比较。创建您的项目文件夹的副本(例如文件夹 1)并重新提取。

现在文件夹 1 已更新为远程仓库中的最新代码。 现在使用 meld 将您的项目文件夹与 folder1 进行比较。您可以在同一位置清楚地找到每个文件的差异,如果需要,只需单击一下即可将其包含在项目文件夹中。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-22
  • 2017-06-17
  • 1970-01-01
  • 2013-10-02
  • 2021-12-31
相关资源
最近更新 更多