UserA 13天前在Github上向UserB提交了什么意思?

时间:2016-05-16 00:59:27

标签: git github

我很想知道当github列出这两个用户时,两个用户中哪一个更改了文件。然而,git记录只包含UserA。

3 个答案:

答案 0 :(得分:68)

UserA是实际进行更改的人。 UserB是将这些更改提交到此分支的人。即如果UserA将其更改提交到branch1,UserB来了,则对branch2进行一些更改,使用branch2将branch1重新绑定。现在,branch1中最顶层的提交将显示UserA已使用UserB提交了这些更改。

编辑:这主要发生在变基和挑选时,因为作者和提交者在这些过程中可能有所不同。

答案 1 :(得分:10)

@ venkatKA的答案是准确和描述性的,但我想我会添加一些细节。

git cat-file -p HEAD可用于打印有关提交的信息

tree d85ed3c3a055c95445898a5119ea0a532459fdsf
parent 0b6ed951b2c04b4134c91ffa053b4330edfdffc1
author AuthA <autha@email.com> 1487356245 +0000
committer AutbB <aubt@email.com> 1487356245 +0000

如果您想修复历史提交者(例如,如果您要更改身份),则可以使用:

git filter-branch -f --tree-filter "GIT_COMMITTER_NAME='New Author'; GIT_COMMITTER_EMAIL='New Author'" 

关于破坏历史的反叛的标准评论以及为什么修正主义是一个坏主意适用。

答案 2 :(得分:0)

发生这种情况的另一个可能原因是使用$GIT_AUTHOR_NAME$GIT_AUTHOR_EMAIL env变量。

设置这些变量后,无论在本地设置user.nameuser.email配置值,它们都会覆盖每个向前提交的作者部分。在这种情况下,当您点击git cat-file -p HEAD时,作者会显示$GIT_AUTHOR_NAME的值,而提交者会显示本地user.name配置的值。

因此,您需要删除在.bashrc.zshrc中导出这些变量的行,或者如果您想保留这些行但只是不想发生这种情况,在运行git commit之前插入unset GIT_AUTHOR_NAME && unset GIT_AUTHOR_EMAIL