git提取出兩個版本之間的差異檔案並打包

2021-07-15 01:41:24 字數 977 閱讀 7859

3年前 (2013-09-11) 

22678瀏覽

公司的專案原先是使用svn做版本管理,發布專案的時候是採用打包的方式壓縮成zip格式的檔案,然後用ftp上傳。隨著開發人員越來越多,需求變化也比較多,經常在開發新功能時要調整線上的問題,在乙個分支上進行開發就非常不方便。雖然svn也支援多分支開發,但是操作非常不便,於是就把專案的版本管理切換成了git。

切換成git之後,為了平緩的過度,發布專案的時候還是打算使用打包的方式,然後ftp上傳。那麼問題就來了:git如何提取出兩個提交之間的差異檔案呢?

一開始找了git format-patch和git archive都沒有找到需要的功能,後來就去查git diff命令,找到了方法。

git diff這個命令能比較兩個提交之間的差異,使用–name-only引數可以只顯示檔名。例如:

$ git diff 608e120 4abe32e --name-only

這個輸出結果非常有意思,就是差異檔案的相對位址,不正好是壓縮命令的引數嗎?於是立馬使用壓縮命令

$ zip update.zip c/environ.c ... 所有的檔案...
就能成功打包了。只是這樣的話也太麻煩了吧,幸好linux有提供乙個命令xargs能將前乙個命令的輸出轉成另外乙個命令的引數,按照這個思路就非常簡單了。

$ git diff 608e120 4abe32e --name-only | xargs zip update.zip

總結

其實這種發布方式並不是非常好,如果線上的環境也能使用版本管理就非常方便了,只是這需要多方面的的配合。從某種意義上來講,這種打包更新方式只是一種折中的處理方式。

還乙個問題是這樣的:提交的排序是按照時間來進行的,如果有分支合併進來的,可能分支裡的提交時間在上次發布的提交時間之前,這樣是否會漏打包到檔案呢?答案是不會的,因為合併分支會產生乙個新的提交,這個提交一定是在上次發布的提交之後。

git提取出兩個版本之間的差異檔案並打包

公司的專案原先是使用svn做版本管理,發布專案的時候是採用打包的方式壓縮成zip格式的檔案,然後用ftp上傳。隨著開發人員越來越多,需求變化也比較多,經常在開發新功能時要調整線上的問題,在乙個分支上進行開發就非常不方便。雖然svn也支援多分支開發,但是操作非常不便,於是就把專案的版本管理切換成了gi...

SVN匯出兩個版本之間的差異檔案

例如你上一次部署的版本是r20,你今次想部署的版本是r30,但是你只需要更新r30與r20版本之間的不同的檔案,就是兩個版本之間的差異檔案,那麼使用tortoisesvn可以很容易的做到這個事情。先選擇showlog檢視修改記錄,然後選擇你要比較的兩個版本,然後按右鍵選 compare revisi...

Jmeter 正則表達提取器取出兩個不同的引數值

問題 退費需要同時傳兩個引數,訂單id和退費no。介面返回引數 方法一 正則 id s s refundno s s 去掉兩個引數間不需要的值 換行符 空格等 檢視提取的引數值 執行介面,debug sampler中檢視結果 方法二 建立兩個正則提取器,分開取值,這個是是一開始用的方法,但是matc...