2011-11-23 86 views
1

我有一個示例HTML文件坐在混帳。最近它需要完全改變,所以沒有太多的觀點在新舊之間的差異。告訴git不能在行級別完全更改文件

目前差異將顯示爲++ - + - + - + --- ++,我希望它只顯示-------- +++++++。

有沒有辦法告訴git這個文件的改變是一個完整的改變,用戶不需要知道行差異,但作爲一個整體改變?

P.S.答案顯示了差異命令的方式,但是如果我可以在commit命令中永久指定特定文件,那將是非常好的。

+0

您試圖破壞版本控制的目的。存儲差異的意義在於,在2周內您意識到自己完全失寵並且需要回到舊版本的文件。 – jbranchaud

+0

我的意思是,當我做一個'git diff'時,我不想看到很多++ - ++ --- ++ - ++ - ++。我更喜歡------ ++++++++ – lulalala

回答

3

每個提交的git的存儲完全新斑塊的文件,即使變化是一個文本文件(以後可能只有增量等包裝)

單個字符的變化,你應該一般不用擔心如何和什麼混帳店(和磁盤空間是便宜)

更新:

如果你只是擔心你看當一個文件被改寫,你可以使用-B的差異選項與差異:

B [<n>][/<m>]
--break-重寫[=[<n>][/<m>]]

歇完全重寫轉變爲對刪除和創建。這 有兩個目的:

它影響的方式,相當於一個文件 的完全重寫的變化不是與發生在文本上匹配的情況下非常 幾行混在一起了一系列的缺失和插入的,但作爲 單一刪除舊的一切,然後單個插入 所有新東西,而數字m控制-B選項 (默認爲60%)的這一方面。 -B/70%指定原始 應該保留在結果中,以便git認爲它總重寫爲 (即,否則所得補丁將是一系列刪除和 插入與上下文行混合在一起) 。

與-M一起使用時,一個完全重寫的文件也被認爲是重命名的源(通常-M只考慮一個消失的文件 作爲重命名的源),並且數字n控制這個 方面的-B選項(默認爲50%)。 -B20%指定與 添加和刪除相比,文件大小的20%或更多的更改是 有資格作爲可能的來源重命名爲 另一個文件。

有更復雜的方法,如使用過濾器分支等來刪除(和修改)歷史,但我不會建議在這種情況下。

+0

哦,我不知道。我不知道爲什麼我對此產生了錯誤的印象。仍然有點惱人的看到新舊混亂的差異。 – lulalala

+0

哈哈,你絕對不想知道Git如何存儲東西。 – jbranchaud

+0

不喜歡「磁盤空間很便宜」的空間本身可能是,但維護/備份/處理花費更多。 –

相關問題