解决合并合并冲突后,更改并提交它,它使用另一个用户作为作者

时间:2018-08-20 12:52:25

标签: git

我的本​​地用户是用户A,我在另一个分支中选择了提交。提交作者是用户B.当选择樱桃时(作为用户A),我遇到了一些冲突。我(用户A)解决了该冲突并本地提交。但是提交历史显示提交作者是用户BI无法想象的。没有Cherry-picking(本地更改提交),它对于 enter image description here

1 个答案:

答案 0 :(得分:0)

git每次提交存储一个作者名和一个提交者名。如果运行创建新提交对象的命令,则本地设置应规定提交者。

但是一般来说,当命令复制另一个提交时,作者也会从另一个提交中复制(不变)(如您所料;只是因为您选择了一个提交并不意味着您编写了它引入的更改) )。

特别是使用rebase或cherry-pick时,一次提交可能会引入多个作者的更改,然后git仍必须标识一个作者。在这种情况下,将复制原始内容的作者,以及所有冲突解决方案的作者。 git认为解决冲突的可能性较小是合理的。因此,尽管您无法想象它会按其方式工作,但我无法想象它会向仅重新提交承诺的人重新证明提交的潜在变化。

在使用squash命令进行交互式变基的情况下,元数据似乎取自该操作中涉及的较早提交。在我看来,这似乎是一个更加糟糕的假设,但是我想这是因为您可能正在组合一组相关的更改(即,常见的情况可能是单个用户在共享之前折叠了本地分支),并且是否需要保留跟踪谁做了哪些更改,然后您才不会压缩提交。

另一方面,--squash命令的merge选项将产生的提交视为运行--squash命令的人员新创建的提交(更像是您似乎要执行的行为)期望)-但是默认情况下会保留新提交消息中每个原始提交的作者身份。

因此,总而言之,收获是:不要太重视作者的元数据。如果您需要提示“某某某人可能对此代码有所了解”,则这是一个很好的工具。这不是为完成的工作分配功劳的100%可靠方法,而且肯定不是“谁”做了什么的“证据”(即,如果您实际上需要一种方法来审核, UserA在变更X上签字,然后您需要其他东西,例如签名)。