在這裡紀錄一下,在 git 要如何找特定行數的變更
假設我們現在有一個 index.html ,內容如下:
<!DOCTYPE html>
<html lang="zh-Hant-TW">
<head>
<meta charset="UTF-8"/>
<title>測試網頁</title>
<link href="styles/lib/bootstrap.css" />
<script src="scripts/lib/jquery-3.4.min.js"></script>
<script src="scripts/lib/jquery-ui-1.8.min.js"></script>
<script>
$(document).ready(function(){
//中略
})
</script>
</head>
<body>
<h1>比方說,卻難尋同樣的淚晶。</h1>
<article>
<p>我也是一般的不能恨,你便蓋沒了你的小耳,對著這不完全,有時激起成章的波動</p>
<p>(一九二五年七月)一九二五年六月三日作,像一個裸體的小孩撲入他母親的懷抱時,你才偷偷的爬起來,她都講給我聽過。</p>
<p>流,講,我們明白的只是底下流血的脛踝,或是拜倫那埃及裝的姿態;但最要緊的是穿上你最舊的舊鞋,流入嫵媚的阿諾河去……</p>
<p>但那晚雖則結識了一個可愛的小友,但我不僅不能盡我的責任,你便乖乖的把琴抱進你的床去,那無非是在同一個大牢裡從一間獄室移到另一間獄室去,新近有一天晚上,打攪你的清聽!小馬,你去時也還是一個光亮,只要你一伸手就可以採取,輕繞著你的肩腰,陽光的和暖與花草的美麗,同在和風中波動他們應用的符號是永遠一致的</p>
<p>不止是苦,她的忍耐,站在漆黑的床邊,他年紀雖則小,你知道的是慈母的愛,約莫八九歲光景,比如去一果子園,他會拉,扮一個漁翁,山罅裡的泉響,是悵惘?</p>
<p>講,日子雖短,日子雖短,你在這世界上寂寞時便不寂寞,更無從悔,新近有一天晚上,尤其是年輕的女伴,你離開了媽的懷抱,更無從悔,在一個睛好的五月的向晚,就這單純的呼吸已是無窮的愉快;空氣總是明淨的,一九二五年六月三日作、在這裡出門散步去,但我最後見你的時候你才不滿四月,誰沒有悵惘?</p>
<p>決不過暖;風息是溫馴的,而況揶揄還不止此,許是恨,不是寡恩,他音樂的興趣已經很深:他比著手勢告我他也有一張提琴,體態的秀美,有時一澄到底的清澈,你去時也還是一個光亮,你的腳蹤彷彿在樓板上踹響。</p>
<p>你就會在青草裡坐地仰臥,一個不相識的小孩,我,流入嫵媚的阿諾河去……但那晚雖則結識了一個可愛的小友,我只是悵惘,你一個人漫遊的時候,流入涼爽的橄欖林中,她多疼你!</p>
</article>
</body>
</html>
然後這是執行git log
後,得出來的結果
Commit | 時間 | 提交者 | 提交訊息 |
---|---|---|---|
be11c8b9ed3e894869d489abd06b0a7906525232 |
獨孤曉華 | 修正前一版本 | |
52f1a9b767114062686cd4d79e807f5551b02544 |
第五家豪 | write js code | |
45ec936770f25860442f0627a572a1f62405a71a |
獨孤曉華 | 整理 source | |
a48295da43e23c9627b2fb2c4e8706cc203c887e |
宓翠愛 | add jquery ui and bootstrap | |
ef25743202f01e056b1194cababef7265d2e476f |
司馬小明 | add jquery | |
66d7c464674665bfa160ee4ee6158dfeb9e813b9 |
李祥 | 建立網頁 |
執行 git diff 66d7c464674665bfa160ee4ee6158dfeb9e813b9..ef25743202f01e056b1194cababef7265d2e476f
,後會出現如下內容。
diff --git a/index.html b/index.html
index c816ae4..a265182 100644
--- a/index.html
+++ b/index.html
@@ -3,6 +3,7 @@
<head>
<meta charset="UTF-8"/>
<title>測試網頁</title>
+ <script src="scripts/jquery-1.3.min.js"></script>
</head>
<body>
<h1>比方說,卻難尋同樣的淚晶。</h1>
可以看出原本 jquery 版本與現在不同,甚至連路徑也不同。
如果要看每一行到底是誰改的,我們首先可以執行git blame index.html
。
然而,假設司馬小明想知道到底是誰把檔案改成 3.4 版,我們可以搭配 grep
(windows cmd 則是 findstr
)來找:
$git blame index.html | grep "jquery"
be11c8b9 (獨孤曉華 2020-04-23 10:43:14 +0800 9) <script src="scripts/lib/jquery-3.4.min.js"></script>
45ec9367 (獨孤曉華 2020-04-23 10:31:15 +0800 10) <script src="scripts/lib/jquery-ui-1.8.min.js"></script>
這樣只是知道最後一行是獨孤曉華改的,但他沒有改動版本。 git blame
和 git log
等一樣,可以查詢特定 commit 的改動,根據上面的 commit 清單,可以如下查詢:
$ git blame index.html 52f1a9b767114062686cd4d79e807f5551b02544 | grep "jquery"
45ec9367 (獨孤曉華 2020-04-23 10:31:15 +0800 9) <script src="scripts/lib/jquery-ui-1.8.min.js"></script>
$ git blame index.html a48295da43e2 | grep "jquery"
01e30b5e (獨孤曉華 2020-04-23 10:27:27 +0800 9) <script src="scripts/jquery-3.4.min.js"></script>
a48295da (宓翠愛 2020-04-23 10:30:47 +0800 10) <script src="scripts/jquery-ui-1.8.min.js"></script>
$ git blame index.html ef25743202f01e0 | grep "jquery"
ef257432 (司馬小明 2020-04-23 10:26:47 +0800 6) <script src="scripts/jquery-1.3.min.js"></script>
藉此,可以知道兇手就是獨孤曉華於01e30b5e的commit
參考資料
- 高見龍。 【狀況題】等等,這行程式誰寫的? from 為你自己學 Git。
沒有留言:
張貼留言