1

如果该文件是在分支之后创建的,有没有办法找到从项目中删除文件的合并?重现我的问题的以下步骤应该澄清:

  • 混帐初始化
  • 触摸文件1
  • git添加文件1
  • git commit file1 -m "在 master 中添加了 file1"
  • git 分支新分支
  • 触摸文件2
  • git添加文件2
  • git commit file2 -m "分支后在 master 中添加了 file2"
  • 回显“对文件1的主更改”>>文件1
  • git commit file1 -m "master 中的 file1 已更改"
  • git结帐新分支
  • echo "newbranch 更改为 file1" >> file1
  • git commit file1 -m "在新分支中更改了 file1"
  • git merge master -s 我们的
  • 触摸文件3
  • git添加文件3
  • git commit file3 -m "在新分支中添加了 file3"
  • git结账大师
  • 触摸文件4
  • git添加文件4
  • git commit file4 -m "在master中添加了file4"
  • git 合并新分支

现在,如何找到删除 file2 的提交(合并)(我的意思是在这一行/命令中发生的合并:“git merge master -s ours”)。

编辑:

  • git log --graph --format=oneline
* 010a604feef300244386490f9c7c777dc9af6b16 合并分支'newbranch'
|\  
| * 3e7f3f6b53c2c92d137fa5a3bac190aa4c3e641f 在新分支中添加了 file3
| * b07090c2c6dd5cd2783f3db160f5b6f433beb544 将分支“master”合并到 newbranch
| |\  
| * | a0053413ab81869574475c0ce889ee721f5ed254 更改了 newbranch4 中的 file1
* | | 859e813acd24c2090287ef9d83da339c06f1c754 在 master 中添加了 file4
| |/  
|/|   
* | 0004dc5cfe23874208c6a921f9c7434fcffba8f4 更改了 master 中的 file1
* | 172d20a93ba40fb040348acc5ffe2ad45803ec22 在分支后在 master 中添加了 file2
|/  
* 6a59be0a3d4203db84b67c02231c420b518fc349 在 master 中添加了 file1

我正在寻找的提交是:b07090c2c6dd5cd2783f3db160f5b6f433beb544

  • git log -g --diff-filter=D --file2

返回:提交 6a59be0a3d4203db84b67c02231c420b518fc349

  • git log -g --diff-filter=D --follow --file2

返回:提交 010a604feef300244386490f9c7c777dc9af6b16

奇怪的是,在我发现问题的存储库中,git log -g --diff-filter=D -- filename确实给了我正在寻找的正确提交。

4

1 回答 1

0

一种方法是git log --all --raw --diff-filter=D -m. 这--all是查看所有分支,而不仅仅是您当前所在的分支。我离开了,-g因为它只搜索 reflogs,如果一个或多个合并是在另一个 repo 上完成的,你的 reflogs 可能从未访问过你正在寻找的提交。-m和显示每次提交时发生的--raw情况,包括合并(通常除了冲突之外是隐藏的)。此命令将两个合并标记为file2已删除的点,至少对于您发布的场景...

于 2013-05-24T17:36:51.340 回答