通常情况下,当我做git blame $filename
,混帐显示我的各种信息的每一行代码,就像在一个文件分成几个文件之后,git可以跟踪作者和文件重命名吗?
^3333b include/Spec1.php (First Last) function load($id) {
^5555b class/Spec.php (Some One) $id = ...
^6666b include/Spec1.php (First Last) $var = ...
也就是说,
- 其呈交它,
- 谁最后更新的路线,
- 有时甚至是该行所来自的文件名(当执行简单的 单个文件重命名时)。
在我的情况下,我似乎已经打破了这个循环,并且git将我的更改注册为由我进行的单个全局更改。
也就是说,我有一个叫做Spec
的大类,其中包含多个产品系列的代码。我将班级中的各种代码重构为几个新班级。当我提交时,git会将这些文件检测为“新文件”。
这意味着我的新文件将以我的名义注册为由我创建的所有新文件,并且其中的行是“全新的”。
从根本上,我失去了:
- 原作者的每一行 - 尽管我刚刚搬到行从一个文件到另一个不是真的有创作它,Git把它作为新的生产线不管。
- 用于容纳每行代码的旧文件名 - 当我做git责备时,git现在只将该行看作是存放在创建的新文件中。它丢失了该行被安置在之前的文件名的跟踪。
有没有办法在做这个复杂的提交时不会失去它们?
不确定您的意思是“此时我有什么能够跟踪更改并保留历史记录?”,但如果您拥有大型Spec类,那么您将保留历史记录。你能指定你要找的更多吗? – gravetii 2015-03-02 16:37:58
请参阅更新 - 我正在寻找保留“文件重命名”作为历史的一部分 – Dennis 2015-03-02 17:17:59
我刚才重写了这个问题,添加了“作者” – Dennis 2015-03-02 17:29:53