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

使用 diff 和 patch 命令協(xié)同開(kāi)發(fā)

系統(tǒng) Linux
本文我們就來(lái)聊聊,怎么使用 diff 和 patch 命令進(jìn)行協(xié)作開(kāi)發(fā)。

 [[441750]]

大家好,我是良許。

之前我在公司上班的時(shí)候,需要經(jīng)常跟外國(guó)同事一起協(xié)同開(kāi)發(fā)(之前在外企上班)。由于是異地協(xié)作,所以溝通幾乎全部是通過(guò)郵件。

我們有使用 Git 進(jìn)行代碼版本管理,但有時(shí)為了快速驗(yàn)證,外國(guó)同事非常喜歡發(fā)個(gè) patch 包過(guò)來(lái)讓我們做測(cè)試。這也是我第一次在工作中使用 diff 和 patch 命令。

簡(jiǎn)單來(lái)講,diff 命令可以用來(lái)創(chuàng)建一個(gè)差異文件,然后接收者可以使用 patch 命令將這部分差異代碼應(yīng)用到自己的代碼里,達(dá)到協(xié)同開(kāi)發(fā)的目的。

本文我們就來(lái)聊聊,怎么使用 diff 和 patch 命令進(jìn)行協(xié)作開(kāi)發(fā)。

一個(gè)簡(jiǎn)單的例子

大家的業(yè)務(wù)及所使用的編程語(yǔ)言都不一樣,所以為了便于敘述與理解,這里不使用具體的代碼,而是一起編寫一個(gè)具有一定邏輯的步驟文檔。

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

下面是你寫的代碼部分: 

  1. Boil water.  
  2. Warm the teapot.  
  3. Add tea and water to the teapot.  
  4. Place a tea cosy over the teapot.  
  5. Steep for 6 minutes.  
  6. Pour tea into cup.  
  7. Add milk. 

你家不種茶,也沒(méi)有泡茶經(jīng)驗(yàn),所以這里有很多優(yōu)化空間。

我家畢竟是多年種茶老司機(jī),也培養(yǎng)出多名優(yōu)秀的賣茶女業(yè)務(wù)代表,所以我大筆一揮,改進(jìn)了一下泡茶步驟。

我先將文件復(fù)制為 tea-revision.md ,然后在此基礎(chǔ)上進(jìn)行修改,得到以下內(nèi)容: 

  1. Warm a teapot in the proving drawer of your oven.  
  2. Boil water.  
  3. Add tea leaves to a tea strainer.  
  4. Add strainer and water to teapot.  
  5. Steep for 6 minutes. Keep it warm with a tea cosy.  
  6. Pour tea into cup.  
  7. Optionally, add warm milk. 

在這里,有幾行代碼語(yǔ)句沒(méi)有任何改動(dòng),比如 Boil water 和 Pour tea into cup ;新增了幾行代碼,比如第一行 ,而有些行則進(jìn)行了改動(dòng)(增加或減少了部分內(nèi)容)。

這么優(yōu)秀的代碼,你不應(yīng)用的話太可惜了~

使用diff命令創(chuàng)建差異

我如果直接把寫好的代碼丟給你,你肯定一頭霧水,需要自己去對(duì)比兩份代碼的差異,費(fèi)時(shí)費(fèi)力。這時(shí) diff 命令就派上用場(chǎng)了。

diff 命令可以直觀顯示兩個(gè)文件之間的差異,使用 --unified (或者簡(jiǎn)寫為 -u)選項(xiàng)可以顯示哪些行被添加或刪除。默認(rèn)情況下,diff 會(huì)將差異結(jié)果輸出打印到終端。 

  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. +Warm a teapot in the proving drawer of your oven.  
  6.  Boil water.  
  7. -Warm the teapot. 
  8. -Add tea and water to the teapot.  
  9. -Place a tea cosy over the teapot.  
  10. -Steep for 6 minutes.  
  11. +Add tea leaves to a tea strainer.  
  12. +Add strainer and water to teapot.  
  13. +Steep for 6 minutes. Keep it warm with a tea cosy. 
  14.  Pour tea into cup.  
  15. -Add milk.  
  16. +Optionally, add warm milk. 

在這個(gè)差異顯示中,加號(hào) ( + ) 表示添加到原文件中的內(nèi)容,而減號(hào) ( - ) 表示刪除或更改的行。

根據(jù)差異創(chuàng)建patch文件

現(xiàn)在我們有了兩份代碼的差異部分了,我們可以根據(jù)差異生成補(bǔ)丁文件。patch 文件的生成很簡(jiǎn)單,只需要使用標(biāo)準(zhǔn) Bash 重定向?qū)?diff 命令的結(jié)果輸出就行了: 

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

該文件的內(nèi)容與輸出到終端的內(nèi)容完全相同,我們可以使用 cat 或 vim 命令來(lái)查看這個(gè)文件。說(shuō)個(gè)題外話,使用 Emacs 工具來(lái)查看的話,它會(huì)根據(jù)每行是被添加還是被減去來(lái)對(duì)每一行使用顏色區(qū)分,非常直觀。

使用patch文件應(yīng)用更改

當(dāng)我生成好了補(bǔ)丁文件之后,我就可以將它發(fā)給你(QQ/微信,郵件,或者其它方式都行),你就可以將它應(yīng)用到你的舊文件中。

這里我們需要使用 patch  命令應(yīng)用補(bǔ)?。?nbsp;

  1. $ patch tea.md tea.patch 

應(yīng)用了補(bǔ)丁之后,你就得到了一個(gè)與我的版本相同的文件: 

  1. $ cat tea.md  
  2. Warm a teapot in the proving drawer of your oven.  
  3. Boil water.  
  4. Add tea leaves to a tea strainer.  
  5. Add strainer and water to teapot.  
  6. Steep for 6 minutes. Keep it warm with a tea cosy. 
  7. Pour tea into cup.  
  8. Optionally, add warm milk. 

隨著開(kāi)發(fā)的進(jìn)行,我們會(huì)進(jìn)行多次代碼增減,在這過(guò)程中我們可以多次生成補(bǔ)丁并應(yīng)用,然后互相審核,一起為代碼做貢獻(xiàn)。

命令安裝

在 Linux 和 macOS 系統(tǒng)上,已經(jīng)默認(rèn)擁有 diff 和 patch 命令。但在 Windows 系統(tǒng)上就需要自己安裝了,一個(gè)簡(jiǎn)單的方法就是通過(guò) Cygwin 來(lái)獲得這兩個(gè)命令。

如果你曾嘗試通過(guò)郵件或微信來(lái)協(xié)作處理文件,并且發(fā)現(xiàn)自己試圖描述需要進(jìn)行更改的位置,那么 diff 和 patch 這兩個(gè)工具非常適合你,可以省去很多溝通成本。 

 

責(zé)任編輯:龐桂玉 來(lái)源: 良許Linux
相關(guān)推薦

2021-12-02 08:47:40

LinuxLinux命令

2018-09-12 15:10:10

2010-03-18 16:38:39

Linux命令

2020-07-09 08:09:21

Linuxdiff命令

2013-11-26 11:08:23

Linux命令diff

2022-05-09 08:55:58

Linuxdiff命令

2010-05-24 14:16:34

子命令SVN diff

2010-05-24 14:57:10

SVN子命令

2024-04-26 08:46:38

WPF開(kāi)發(fā)UndoRedo

2010-09-02 15:42:37

echo命令

2015-07-20 17:12:57

2010-07-19 16:10:11

Telnet命令

2011-08-15 18:24:38

patch中文man

2017-06-05 11:23:45

LinuxDiff和Meld工具

2011-08-12 09:23:11

diff中文man

2010-06-17 14:31:10

Rsync 使用

2021-10-22 14:23:02

logrotateLinux 命令Linux

2012-05-11 10:26:09

Linuxcdalias

2023-03-02 20:46:32

鴻蒙云存儲(chǔ)服務(wù)

2013-05-31 11:16:02

googleD11Android
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)