我注意到如果我做一个git rebase -i HEAD~10
然后不更改结果文件中的任何内容,仍然会执行某种类型的重新设置。即我需要git push origin branch --force
自从定期推git push origin branch
显然会失去历史!
这似乎意味着某些历史已更改,但我不明白为什么。如果我没有选择更改任何提交(即选择了每个提交),那么历史为什么会发生变化,具体发生了什么变化?
最佳答案
如果执行git log --format=fuller
,您将看到一个提交不仅跟踪作者,而且跟踪提交者:
commit 0d987988ffed315ef63f79b33eae40a8715390c9
Author: Statichippo <example@example.com>
AuthorDate: Fri Jun 22 14:09:48 2012 -0400
Commit: Statichippo <example@example.com>
CommitDate: Fri Jun 22 14:09:48 2012 -0400
a commit message
重新确定基准时,您的用户将列为新提交者。这是一个示例,如果我重新构建该代码块,它将是什么样子:
commit 3e23bea3c778c66h59c5f665061e9354507b379b
Author: Statichippo <example@example.com>
AuthorDate: Fri Jun 22 14:09:48 2012 -0400
Commit: Jacob Angel <jangel@example.com>
CommitDate: Tue Jul 3 12:39:43 2012 -0400
a commit message
因此,可能正在发生的事情是您正在重新基准另一个人所做的提交,并且正在更改提交和CommitDate。显然git将看到一个新的哈希(因为提交的一部分已更改)并记录了更改。
关于git-rebase - 如果没有任何变化,rebase -i会做什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11268344/