2012-06-13 37 views
1

使用案例:Git:有沒有辦法查看對文件的特定部分所做的更改?

我發現了一段我完全不理解的代碼。我想找到寫代碼的時間上下文,以及代碼的這一部分所經歷的所有更改。

基本查找此文件的歷史記錄,但僅查找與[第34行至第38行(作爲示例)]相交的那部分歷史記錄]。

是否有一個比git log -p <file> | grep <some snippet matching mysterious code>更有用的命令,然後返回log -p輸出來查看diff中的上下文。

令人遺憾的是,當我回顧代碼時,我經常會發現需要這種功能,我寫了

回答

1

git blame <path to file>將爲您提供帶上下文的提交列表(在該文件的提交點完成的更改)。閱讀git help blame所有的權力。

然後你可以使用git show <commit>:<path>看到那個犯點或git diff <commit> <commit> -- <path>整個文件看出差別

+0

嗯。好的。這有助於我找到每行最後一次編輯的時間,但這並不一定會使我找到我想要的內容。它有助於縮小我應該搜索的時間範圍,但我想要一些易於使用的東西,它向我展示了一段代碼所經歷的轉換。 –

+0

你可以grep對你感興趣的字符串的錯誤結果(行號 - 你的情況 - 不工作,因爲代碼可以在歷史中上下移動) –

+0

@Steven Lu ...'blame' then'show '(或'diff')是我知道的唯一方法。 –

相關問題