为什么 git 提交的更改在其他 2 次提交后消失了(我没有更改受影响的文件)?
Why did the changes of a git commit disappear after other 2 commits (where I did not change the affected file)?
我做了什么:
我分离了我的工作分支的负责人 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 文件突然被旧提交覆盖。
[Link 该提交,C][3]
您可以在提交 C 中看到,查看差异时没有任何更改。但是在历史记录的此时浏览存储库时,提交 A 被旧提交覆盖。 (在第 793 行附近,提交 A 中添加的内容不再存在)
[Link 到历史上那个时刻的 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 中的所有提交都是 "restored"?我应该重新挑选它们吗?
(我不得不删除链接 3 到 5,因为由于 Whosebug 规则“你需要至少 10 个信誉才能 post 超过 2 个链接,我不能再 post )
当您没有签出分支时,您最终基于 patterns_new
创建了提交。
很好,提交仍然存在,但它们不在那个分支上。您的提交 B 303e50d
是该未命名分支上的最后一次提交,也是最后一次进行更改的提交。
您的提交 C 4835b67
将原始 patterns_new
提交 dbf4c2863
作为其父项。
在 303e50d
上命名一个新分支并将其与您最新更改所在的任何地方合并,一切都会好的。
此外,请注意提交永远不会 "overwritten" 或以任何方式更改:它们不可能 - 哈希不匹配!几周后,您只能添加新的提交或没有分支或标签垃圾收集的提交。
我做了什么: 我分离了我的工作分支的负责人 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 文件突然被旧提交覆盖。 [Link 该提交,C][3]
您可以在提交 C 中看到,查看差异时没有任何更改。但是在历史记录的此时浏览存储库时,提交 A 被旧提交覆盖。 (在第 793 行附近,提交 A 中添加的内容不再存在) [Link 到历史上那个时刻的 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 中的所有提交都是 "restored"?我应该重新挑选它们吗?
(我不得不删除链接 3 到 5,因为由于 Whosebug 规则“你需要至少 10 个信誉才能 post 超过 2 个链接,我不能再 post )
当您没有签出分支时,您最终基于 patterns_new
创建了提交。
很好,提交仍然存在,但它们不在那个分支上。您的提交 B 303e50d
是该未命名分支上的最后一次提交,也是最后一次进行更改的提交。
您的提交 C 4835b67
将原始 patterns_new
提交 dbf4c2863
作为其父项。
在 303e50d
上命名一个新分支并将其与您最新更改所在的任何地方合并,一切都会好的。
此外,请注意提交永远不会 "overwritten" 或以任何方式更改:它们不可能 - 哈希不匹配!几周后,您只能添加新的提交或没有分支或标签垃圾收集的提交。