Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么git提交的更改在其他两次提交后消失(我没有更改受影响的文件)?_Php_Git_Commit - Fatal编程技术网

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

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文件突然被旧的提交

我所做的: 我卸下了我的工作部门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文件突然被旧的提交覆盖。 [链接至该承诺,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
上命名一个新分支,并将其与最新更改所在的位置合并,一切都会正常


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

感谢您的解释。这对我帮助很大,解决了问题。