Php 为什么git提交的更改在其他两次提交后消失(我没有更改受影响的文件)?
我所做的: 我卸下了我的工作部门MOODLE_27_马厩的负责人。然后我创建了一个名为patterns new的新分支,用Php 为什么git提交的更改在其他两次提交后消失(我没有更改受影响的文件)?,php,git,commit,Php,Git,Commit,我所做的: 我卸下了我的工作部门MOODLE_27_马厩的负责人。然后我创建了一个名为patterns new的新分支,用 checkout -b patterns_new 然后,我在10月20日更改了文件db/upgrade.php: 然后,2次提交之后,这些更改突然消失在upgrade.php中。但是提交没有提到,甚至修改了db/upgrade.php 在随后的第一次提交之后,db/upgrade.php仍然保持不变 然后在下一次提交之后,db/upgrade.php文件突然被旧的提交
checkout -b patterns_new
然后,我在10月20日更改了文件db/upgrade.php:
然后,2次提交之后,这些更改突然消失在upgrade.php中。但是提交没有提到,甚至修改了db/upgrade.php
在随后的第一次提交之后,db/upgrade.php仍然保持不变
然后在下一次提交之后,db/upgrade.php文件突然被旧的提交覆盖。
[链接至该承诺,C][3]
您可以在commit C中看到,在查看差异时没有任何更改。但是在历史记录中的这一点上浏览存储库时显示,commit A被旧的commit覆盖。(在第793行附近,提交A中添加的内容不再存在)
[链接到历史记录中的db/upgrade.php][4]
我将MOODLE_27_STABLE完全替换为patterns_新分支(基于MOODLE_27_STABLE分离的头部,后来:
git checkout patterns_new
git merge -s ours MOODLE_27_STABLE
git checkout MOODLE_27_STABLE
git merge patterns_new
(基于以下教程[将分支完全替换为另一个分支][5])
我现在确实担心,这可能不是唯一一个被覆盖的提交。为什么会发生这种情况?我如何确保所有新模式的提交都已“恢复”?我是否应该再次选择它们
(我不得不删除3到5个链接,因为stackoverflow规则“你需要至少10个信誉才能发布2个以上的链接”不允许我发布更多链接)当你没有签出分支时,你最终创建了基于
模式的提交
很好,提交仍然存在,但它们不在该分支上。您的提交B,303e50d
,是该未命名分支上的最后一次提交,也是最后一次有您的更改的提交
您的commit C,4835b67
,具有原始的模式\u new
commit,dbf4c2863
,作为其父级
在303e50d
上命名一个新分支,并将其与最新更改所在的位置合并,一切都会正常
另外,请注意,提交不会被“覆盖”或以任何方式更改:它们不能被覆盖-哈希不匹配!您只能在几周后添加新的提交,或者让没有分支或标记的提交被垃圾收集。感谢您的解释。这对我帮助很大,解决了问题。