在哪种情况下git会自动更新作者(无标志)

pkln4tw6  于 2022-11-20  发布在  Git
关注(0)|答案(1)|浏览(131)

我想知道如果没有提供改变提交者的标志/命令,在哪些情况下git会改变提交者?

上下文

我创建了一些提交,创建了一个合并请求/拉取请求。其他人负责管理所有的重定基和一些合并冲突等。
当我们后来寻找一些提交的时候,我们看到作者被改成了第二个人,但是我不认为他们是故意的。

aurhwmvo

aurhwmvo1#

Git不会改变提交。Git真的 * 不能 * 改变提交。所以你根本就问错了问题。幸运的是,你的上下文提供了一些线索,让你知道你想问什么问题,那就是:

当使用Git命令复制提交时,Git什么时候会更改作者字段?

git rebasegit cherry-pick都可以复制提交,并且都使用相同的策略--事实上,git rebasegit rebase的某些版本中确实调用了git cherry-pick,而在其他版本中,它共享了足够多的代码,可以认为它们在这里是相同的。
这两个命令通常都以你(不管你是谁,运行git rebasegit cherry-pick的人)作为 committer,而以原作者作为 author 来创建新提交。由于Git将这些作为两个独立的实体来存储每个提交,所以这样做很好。像GitHub这样的网站通常会为复制的提交显示两个用户,尽管这种显示取决于托管网站。
有一个很大的例外,那就是当使用--reset-author作为标志时,但您确实说过要排除标志。
这里还有另一个问题,但不是Git问题,而是特定于托管站点的问题:

当使用Bitbucket / GitHub / GitLab并合并拉/合并请求时,托管站点何时生成一个或多个新提交而不是使用原始提交,谁是新提交的作者和提交者?

这些答案会因托管站点的不同而不同。值得注意的是,如果你使用REBASE AND MERGE或SQUASH AND MERGE合并模式,GitHub会生成新的提交。前者有效地使用了git rebase,1所以它的行为就像一个强制的rebase后跟一个git merge。后者有效地使用了git merge --squash。这会生成一个新的提交,其中“你”(使用点击Web按钮的人)既是作者又是提交者。
1“Efficiently”,因为GitHub使用自己的代码加上libgit 2来做一切,而不是使用命令行Git。

相关问题