Vin*_*nce 7 git github git-merge git-revert atlassian-sourcetree
最近在工作中,我们使用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.
Run Code Online (Sandbox Code Playgroud)
通过从祖先提交创建新分支并在该新分支之上应用一些补丁,已解决此问题.
所以我不需要帮助来解决这个问题,我只是想了解恢复提交如何也可以是合并提交,发生了什么,以及如何重现这种奇怪的行为.
我试图像这样重现它:
8cc73718cc7371它8cc7371按预期创建具有单个父()的还原提交.
罪魁祸首提交作者使用Atlassian SourceTree而不是本机命令行界面,所以我也尝试使用SourceTree中的恢复功能并获得与上面相同的结果(单亲).
运行一些git命令后b5f9731,我注意到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
Run Code Online (Sandbox Code Playgroud)
SourceTree和Github正在显示2个文件.
你可以在这里找到图形的样子:graph.html,以及一些git命令结果:misc.html.
谁能解释一下发生了b5f9731什么?
我想到了什么:
git revert ...
# new commit abcdef
git merge ...
# new commit fedcba
git rebase -i HEAD~2
pick abcdef - the original revert commit
squash fedcba - the merge commit
Run Code Online (Sandbox Code Playgroud)
消息取自abcdef.
这一切都会产生新的b5f9731. 它有两个来自合并提交的父级和来自恢复提交的消息。
| 归档时间: |
|
| 查看次数: |
219 次 |
| 最近记录: |