为什么在其他2次提交之后git提交的更改会消失(我没有更改受影响的文件)?

时间:2015-11-10 21:11:46

标签: php git commit

我做了什么: 我分离了我的工作分部MOODLE_27_STABLE的负责人。然后我创建了一个名为patterns new的新分支,用

检查分离的头状态
checkout -b patterns_new

然后我在10月20日更改了文件db / upgrade.php: Link to this commit, I call it A

然后,2个提交后突然这些更改在upgrade.php中消失了。但是提交没有提到,db / upgrade.php甚至被修改了。

在第一次提交之后,db / upgrade.php仍然保持不变 Link to that commit, B

然后在下次提交之后突然用旧提交覆盖db / upgrade.php文件。 [链接到该提交,C] [3]

您可以在提交C中看到,查看差异没有任何更改。但是,在历史记录中此时浏览存储库时,提交A被旧提交覆盖。 (在第793行附近,在提交A中添加的内容不再存在) [链接到历史记录中的db / upgrade.php] [4]

我使用patterns_new分支完全取代MOODLE_27_STABLE所做的工作(基于MOODLE_27_STABLE的分离头,后来是:

git checkout patterns_new
git merge -s ours MOODLE_27_STABLE
git checkout MOODLE_27_STABLE
git merge patterns_new

(基于以下教程[完全由另一个分支替换分支] [5])

我现在担心,这可能不是唯一一个被覆盖的提交。为什么会发生这种情况,我怎么能保证,pattern_new中的所有提交都是"恢复"?我应该再次挑选它们吗?

(我不得不删除链接3到5,因为我不允许发布更多由于stackoverflow规则"您需要至少10个声誉才能发布超过2个链接)

1 个答案:

答案 0 :(得分:1)

当您没有签出分支时,您最终会根据patterns_new创建提交。

哪个好,提交仍然存在,但是它们不在那个分支上。您的提交B 303e50d是该未命名分支的最后一次提交,是最后一次更改。

您的提交C 4835b67具有原始patterns_new提交,dbf4c2863作为其父级。

303e50d上命名一个新分支,并将其与最新更改的位置合并,一切都会正常。

另外,请注意,提交永远不会被“覆盖”或以任何方式更改:它们不能 - 哈希不匹配!您只能在几周后添加新提交或没有分支或标签的提交垃圾。