我知道git跟踪整个项目的变化而不是特定的文件。这导致我跟随问题。
我可以使用git命令对变更应用不同的解释吗?
我可能会问"哪个提交最后修改了这个特定的行?"或者"哪些提交修改了该行的内容但未从其他地方删除相同的内容?"。
我可以开箱即用,以及如何解读?哪个是默认的?
答案 0 :(得分:1)
我觉得git跟踪整个项目的事实往往被误解了。这意味着什么
但是git仍然以文件大小为单位存储数据,称为blob对象。 blob一次只是文件的内容,与其名称分离,存储在树对象中。
这种存储方法的一个含义是文件重命名不是(总是)显式但暗示:
git mv foo.c bar.c
cp foo.c bar.c; git add bar.c; git rm foo.c
上面的两行产生完全相同的git status
输出:
renamed: foo.c -> bar.c
Git只是检测到在树对象中以不同的名称引用相同的blob对象。
最后,正如@AndrewC指出的那样,git log
有一些选项可以关注内容。
git log --follow <single-file> # Print the history of a file, following renames as well
git log -S string # Show commits where the occurrence number of string has changed
git log -G string # Show commits whose diff contains the string