shell指令碼整理git修改前後

2021-09-28 18:21:49 字數 1570 閱讀 2038

之前用svn,圖形化介面,可以很容易匯出修改前後,以檔案的形式。然後用beycond compare進行對比,很好用。

使用git沒發匯出修改前後,只能看diff檔案,顯示不全。

所以製作了乙個shell指令碼,不是太完善,還能用。

使用方法:

1、修改dir為想要dir為修改前後存放的地方,修改head_hash為git log最後的hash

2、把原始碼檔案存為commit_befor_after.sh放到可以執行git命令的地方,然後執行

./commit_befor_after.sh hash1_before hash2_after

其中hash1_before是修改前的hash,hash2_after是修改後的hash。

執行完畢後在~/commit_befor_after下就可以看到修改前後。

另外會在當前資料夾下產生list.txt檔案,裡面存放的是修改檔案清單。

3、原始碼如下,根據需要可以自己修改。

#!/bin/sh

dir=~/commit_befor_after

head_hash=*********x

echo the before hash:"$1"

echo the after  hash:"$2"

rm $/before/ -rf

rm $/after/ -rf

mkdir -p $/before/

mkdir -p $/after/

echo git diff --name-status "$1" "$2"

cmd1=$(echo git diff --name-status "$1" "$2")

$cmd1| awk '' > list.txt

filelist=$(cat list.txt)

echo $filelist

echo

echo ----------work begin------------------------------------

echo git reset "$2" begin

git reset "$2" --hard

for file in $filelist

doecho cp --parents $ $/after/

cp --parents $ $/after/  

done

echo  

echo git reset "$1"

git reset "$1" --hard

for file in $filelist

doecho cp --parents $ $/before/

cp --parents $ $/before/

done

echo

echo git reset--hard head

git reset $head_hash --hard

echo ----------work end-------------------------------------

Shell指令碼實踐整理

準備 建立測試檔案 1.按行讀取檔案內容,且過濾包含 字元的行 bin bash file name test cat file name while read line do 過濾配置檔案中包含 的行if then continue fi echo done 結果 hrx test shell t...

shell指令碼修改host

需求 由於我需要將乙個網域名稱 a.b.c 繫結到本機ip,而本機ip經常會變動 導致網域名稱出問題,因此我需要乙個指令碼更新host 最好可以定時去更新指令碼設計 查詢本機ip 對比host中的配置是否一致 更新host配置shell指令碼 echo 查詢本機ip ip ifconfig en0 ...

批量修改檔案字尾 shell指令碼

ps 當前目錄下,無遞迴查詢,其中hz1為修改前的字尾,hz2為修改後的 bin bash hz1 1 hz2 2if 1 then hz1 repo hz2 bak echo 預設原始檔字尾為 repo 修改後字尾為 bak fipwd pwd echo pwd if pwd then echo ...