自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用 Linux 的 diff 和 patch 對文件進行協(xié)作

系統(tǒng) Linux
如果你曾經(jīng)試圖通過電子郵件或聊天來協(xié)作處理文件,并且發(fā)現(xiàn)自己試圖描述需要修改的地方,那么你會喜歡 diff 和 patch 的。

[[438039]]

如果你曾經(jīng)試圖通過電子郵件或聊天來協(xié)作處理文件,并且發(fā)現(xiàn)自己試圖描述需要修改的地方,那么你會喜歡 diff 和 patch 的。

我編輯過很多文本文件。有時是代碼。其他時候是角色扮演游戲(RPG)、編程書籍或一般信件的書面文字。有時候,做一個修改,而能讓我的協(xié)作者把我的修改和他們原來寫的東西進行比較就更好了。許多人默認使用辦公套件(如 LibreOffice)的注釋或更改跟蹤功能。不過有時更簡單的工具更有意義,為此,你可以看看像 diff 和 patch 這樣的工具的編程歷史,它們?yōu)楦櫤蛻霉蚕砦募淖兓峁┝藰藴驶母袷健?/p>

即使對于簡單的文件,在同步兩個文件時也有復雜性。一些項目被改變,另一些被保留,新的內(nèi)容被添加,還有一些保持不變,但被移到文件的不同位置。如果接受所有的變化,并且用新文件替換舊文件,就很難復制變化。它也是整體不透明的。如果變化很多,就很難挑出到底發(fā)生了什么變化。

通過 diff 命令,你可以創(chuàng)建一個文件變化的記錄,通過 patch 你可以在舊版本上“重放”這些變化,使其與新版本保持一致。

設置

假設你和我正在合作編寫一個描述如何泡茶的文件。

到目前為止,文件 tea.md 包含原始的復制粘貼來的內(nèi)容:

  1. 燒開水。
  2. 加熱茶壺。
  3. 在茶壺中加入茶和水。
  4. 在茶壺上放置一個茶葉濾網(wǎng)。
  5. 浸泡 6 分鐘。
  6. 將茶倒入杯中。
  7. 加入牛奶。

這似乎很合理,但總有一些優(yōu)化可以做,所以你把文件發(fā)給我改進。為了澄清泡茶過程,我把文件復制為tea-revision.md,并進行編輯,最后是這樣的:

  1. 在烤箱的抽屜中加熱茶壺。
  2. 燒開水。
  3. 將茶葉放入茶葉濾網(wǎng)。
  4. 將濾網(wǎng)和水加入茶壺。
  5. 浸泡 6 分鐘。用茶壺罩保溫。
  6. 將茶倒入杯中。
  7. 可以選擇加入溫牛奶。

正如預期的那樣,一些項目(“燒開水”和“將茶倒入杯中”)沒有變化,而其他行(“加熱茶壺”)則有增加。有些行是全新的,有些行是相同的,但順序不同。

創(chuàng)建一個差異

diff 工具會顯示兩個文件之間的差異。有幾種不同的方法來查看結果,但我認為最清楚的是 —unified(簡寫為 -u)視圖,它顯示哪些行被增加或減少了。以任何方式改變的行都被視為先減后增的行。默認情況下,diff 將其輸出打印到終端。

向 diff 提供舊文件,然后是新文件:

  1. $ diff --unified tea.md tea-revised.md 
  2. --- tea.md      2021-11-13 10:26:25.082110219 +1300
  3. +++ tea-revised.md      2021-11-13 10:26:32.049110664 +1300
  4. @@ -1,7 +1,7 @@
  5. +在烤箱的抽屜中加熱茶壺。
  6. 燒開水。
  7. -加熱茶壺。
  8. -在茶壺中加入茶和水。
  9. -在茶壺上放置一個茶葉濾網(wǎng)。
  10. -浸泡 6 分鐘。
  11. +將茶葉放入茶葉濾網(wǎng)。
  12. +將濾網(wǎng)和水加入茶壺。
  13. +浸泡 6 分鐘。用茶壺罩保溫。
  14.  將茶倒入杯中。
  15. -加入牛奶。
  16. +可以選擇加入溫牛奶。

行首的加號(+)表示在舊文件中增加了一些內(nèi)容。行首的減號(-)表示被刪除或改變的行。

用 diff 創(chuàng)建一個補丁

補丁文件就是將 diff —unified 命令的輸出放到一個文件中。你可以用標準的 Bash 重定向來做這件事:

  1. $ diff -u tea.md tea-revised.md > tea.patch

該文件的內(nèi)容與輸出到終端的內(nèi)容完全相同。我喜歡在 Emacs 中查看補丁文件,它對每一行進行顏色編碼,取決于它是被添加還是被減去。

 

Emacs中的補丁文件

用補丁應用修改

一旦我有了補丁文件,我就可以把它發(fā)給你,讓你審查,并且可以選擇應用到你的舊文件中。你可以用 patch 命令來應用一個補丁。

  1. $ patch tea.md tea.patch

增加了一些行,減少了一些行,最后,你得到了一個與我的版本相同的文件:

  1. $ cat tea.md
  2. 在烤箱的抽屜中加熱茶壺。
  3. 燒開水。
  4. 將茶葉放入茶葉濾網(wǎng)。
  5. 將濾網(wǎng)和水加入茶壺。
  6. 浸泡 6 分鐘。用茶壺罩保溫。
  7. 將茶倒入杯中。
  8. 可以選擇加入溫牛奶。

你可以給一個文件打多少次補丁,這是沒有限制的。你可以對我的修改進行迭代,生成一個新的補丁,然后發(fā)給我審核。發(fā)送修改內(nèi)容而不是結果,可以讓每個貢獻者審查修改的內(nèi)容,決定他們要保留或刪除的內(nèi)容,并準確地記錄過程。

安裝

在 Linux 和 macOS 上,你已經(jīng)有了 diff 和 patch 命令。在 Windows 上,你可以通過 Cygwin 獲得 diff 和 patch,或者使用 Chocolatey 搜索 diffutils 和 patch

如果你曾經(jīng)試圖通過電子郵件或聊天來協(xié)作處理文件,并且發(fā)現(xiàn)自己需要 描述 需要修改的地方,那么你會喜歡 diff 和 patch。一個結構嚴謹?shù)奈募?,如代碼或以行為單位的 Markdown,很容易進行差異比較、補丁和維護。 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2021-12-23 15:23:42

diffpatchLinux

2018-09-12 15:10:10

2023-12-13 13:47:00

Linux重組文件

2009-12-24 10:12:02

Linux查看文件編碼

2010-03-05 09:40:08

Python遞歸

2017-06-01 15:30:32

LinuxVim文件加密

2016-12-14 09:24:42

文件目錄壓縮

2017-08-01 17:34:47

Linux內(nèi)核驅動文件讀寫

2010-03-18 16:38:39

Linux命令

2011-10-27 14:15:05

Java 7

2021-06-22 10:30:42

Linuxpushdpopd

2010-04-30 11:22:23

Unix系統(tǒng)

2016-12-08 15:12:24

GnupgLinux加密

2022-10-08 08:36:02

UbuntuLinux語音識別

2010-07-01 10:20:41

SQL Server

2022-05-09 08:55:58

Linuxdiff命令

2022-11-07 07:04:25

2022-08-17 12:35:26

Linux sed編輯器

2020-07-09 08:09:21

Linuxdiff命令

2013-11-26 11:08:23

Linux命令diff
點贊
收藏

51CTO技術棧公眾號