【发布时间】:2015-08-29 10:29:44
【问题描述】:
最近在工作中,我们在使用 git(和私有 github 存储库)进行版本控制的项目中丢失了一些代码。
我使用git bisect 找到了罪魁祸首提交,我真的很惊讶地发现它看起来像是一个还原提交,但也有两个父级像合并提交:
commit b5f97311eea2905baf8a96fddec22321d952f05c
Merge: 8cc7371 131d463
Author: Bob <bob@othercompany.com>
Date: Fri May 22 19:42:25 2015 +0200
Revert "ISB-CPW-3627 - Mise en place du calage des filtres DS1/DS2/DS3/DS4"
This reverts commit 8cc7371e7133b68db95ac8e9aeb730d7889a1166.
此问题已通过从祖先提交创建新分支并在该新分支之上应用一些补丁来解决。
所以我不需要帮助来解决这个问题,我只是想了解恢复提交如何也可能是合并提交,发生了什么,以及如何重现这种奇怪的行为。
我试图像这样复制它:
- 在
8cc7371创建一个新分支 - git 还原
8cc7371
它按预期创建了一个具有单亲 (8cc7371) 的还原提交。
罪魁祸首提交作者使用 Atlassian SourceTree 而不是本机命令行界面,因此我也尝试使用 SourceTree 中的还原功能并得到与上述相同的结果(单亲)。
在b5f9731 上运行一些git 命令后,我注意到git diff 和git show 没有报告相同的文件集:
$ git diff b5f9731..8cc7371 --name-only
=> 2 files :
application/sites/frontend/views/scripts/Layout/Foobar/PointsDeVente/index.tpl
public/media/design/frontend/css/main-dev.css
$ git show --oneline --name-only b5f9731
=> 1 file :
public/media/design/frontend/css/main-dev.css
SourceTree 和 Github 显示 2 个文件。
您可以在此处找到图表的外观:graph.html,并在此处找到一些 git 命令结果:misc.html。
谁能解释b5f9731 发生了什么?
【问题讨论】:
-
我会将这篇文章添加到收藏夹,并将其用作 Git 相关问题的自定义 How-To-Ask 参考。
-
调查进展如何?
-
今天我玩了 SourceTree 的交互式 rebase 功能,但无法重现该问题。我想这个问题与
git rebase或git pull --rebase有关,但我放弃了。我没有足够的信息,3 周前发生这种情况时,我要求提交作者将他的 reflog 发送给我以进行进一步调查,但他无法这样做。他在另一家公司工作(他们在前端工作,而我的公司在服务器端工作),沟通很困难。谜团依然存在:s
标签: git github git-merge atlassian-sourcetree git-revert