合并时从存储库中删除文件会使它们消失

时间:2015-07-08 08:13:07

标签: git git-merge

以下是展示问题的测试代表:https://bitbucket.org/vektor330/bugtest

事件的顺序如下:

  1. 添加一些初始提交。
  2. A人将Conflictsource添加到develop
  3. B人将Conflict添加到master
  4. B人将develop合并到master,使用“我的”策略解决Conflict上的冲突,并从存储库中删除source。现在这是一个空提交,但可以提交并推回到远程。
  5. 结果是:source已完全从存储库中消失。它出现在7dfa23e中,它出现在回购中,它在5080a24中悄然消失,没有一条痕迹。

    我希望提交5080a24显示“source已删除”,Git或我的期望有什么问题?

3 个答案:

答案 0 :(得分:6)

  

为什么这不会显示为合并提交的内容"。

您可以通过依次选择合并提交和两个父项中的每一个来可视化合并提交的内容。

当您在开发分支中选择(在SourceTree中)时(除了合并提交),您清楚地看到files_to_lose/source已被删除:

diff

  

为什么提交本身不显示丢失的文件?

因为在合并提交的情况下,有两个父母要比较。 SourceTree并没有提供针对这两个父母的差异。

Mac或Windows的GitHub,当您选择合并提交时:

GitHub for Windows

简而言之,这不是关于Git,而是关于你正在使用的Git GUI。

答案 1 :(得分:1)

我认为你很困惑“存储在Git中的内容”和“BitBucket向你展示的内容”。有两个独立的父母,您可以通过点击BitBucket界面右侧的链接来​​比较每个父母。

答案 2 :(得分:1)

我不确定你的问题是关于bitbucket还是关于git。但是,在git中,您需要使用git show标志运行-m以显示合并提交。添加该标志会显示已删除的文件:

$ git show --summary -m 5080a24
commit 5080a24f6585af2b38161ba55ec4835c7171634d (from 7dfa23e1bfc0a460bfe8071e3623ce9b5959a785)
Merge: a8a08dc 7dfa23e
Author: Matej VitaÌsek <vektor330@gmail.com>
Date:   Wed Jul 8 09:58:05 2015 +0200

    Hahaaa, a hidden files commit!

 delete mode 100644 files_to_lose/source
$