gpt4 book ai didi

git - git blame 如何确定谁编辑了文件的一行?

转载 作者:太空狗 更新时间:2023-10-29 13:11:08 24 4
gpt4 key购买 nike

使用

git blame file

将显示有关每一行的所有信息,例如谁在哪个提交中添加了这一行,以及何时添加了这一行,但据我所知,每次更改文件时 Git 都会添加一个全新的对象。那么 Git 在哪里存储关于每一行的信息呢?

最佳答案

正如@mvp 所说,“事实并非如此”。不过,为了回答您的评论——即“这个过程的流程”——它的工作方式非常类似于一系列 git diff,从文件的最新版本开始,向后工作直到每条线都有一个指定的起点。

假设您有一个只有四行的短文件,并且它是最新的(即 HEAD 中的版本)。进一步假设 git diff 显示在修订版 HEAD~1 中只有前三行,而我添加了最后(第四)行。那么第 4 行的“罪魁祸首”就是我的:它在以前的版本中没有,而在当前版本中有,所以我必须添加它。

剩下的问题是找出谁应该为这三行代码“负责”。所以现在 git 必须区分 HEAD~1HEAD~2。如果这三行都与 HEAD~2 中的完全一样——例如,如果从 HEAD~2 更改为 HEAD~ 1 只是删除了一些行——然后我们必须继续往前追溯。

不过,在某些时候,git diff 会显示某人 添加了第 1 行、第 2 行和/或第 3 行(在某些以前的版本中),可能同时删除其他一些行;或者在最坏的情况下,git 将达到“根提交”:没有 parent 的提交。无论如何,无论是谁提交了导致这些行出现的提交,都必须受到指责。

关于git - git blame 如何确定谁编辑了文件的一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17607784/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com