← 上一章:【冷知識】HEAD 是什麼東西? 下一章:【冷知識】那個長得很像亂碼 SHA-1 是怎麼算出來的? →
【狀況題】可以只 Commit 一個檔案的部份的內容嗎?
舉個例子來說,假設我的網站的首頁 index.html 的內容是這樣:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>首頁</title>
</head>
<body>
<div class="container">
<h1 id="heading">頭版消息</h1>
<div>
內文
內文
內文
內文
</div>
<div id="footer">
版權沒有,歡迎取用
</div>
</div>
</body>
</html>
如果我因為某些龜毛的原因,footer 那個區塊還不想 Commit,在 Git 也可以先 Commit 其它的部份。
$ git add -p index.html
diff --git a/index.html b/index.html
index e90bdb3..2cac685 100644
--- a/index.html
+++ b/index.html
@@ -6,6 +6,16 @@
</head>
<body>
<div class="container">
+ <h1 id="heading">頭版消息</h1>
+ <div>
+ 內文
+ 內文
+ 內文
+ 內文
+ </div>
+ <div id="footer">
+ 版權沒有,歡迎取用
+ </div>
</div>
</body>
</html>
Stage this hunk [y,n,q,a,d,/,e,?]?
當使用 git add
的時候加上 -p
參數後,Git 會問說是不是要把這個區塊(hunk)加到暫存區,如果選 y
就是整個檔案加進去。但因為我只想送出部份內容,所以選擇了 e
選項,接著就會出現編輯器顯示以下內容:
# Manual hunk edit mode -- see bottom for a quick guide.
@@ -6,6 +6,16 @@
</head>
<body>
<div class="container">
+ <h1 id="heading">頭版消息</h1>
+ <div>
+ 內文
+ 內文
+ 內文
+ 內文
+ </div>
+ <div id="footer">
+ 版權沒有,歡迎取用
+ </div>
</div>
</body>
</html>
# ---
# To remove '-' lines, make them ' ' lines (context).
# To remove '+' lines, delete them.
# Lines starting with # will be removed.
#
# If the patch applies cleanly, the edited hunk will immediately be
# marked for staging.
# If it does not apply cleanly, you will be given an opportunity to
# edit again. If all lines of the hunk are removed, then the edit is
# aborted and the hunk is left unchanged.
在這邊就可以編輯想要加到暫存區的區塊,因為 footer 的那個區塊我還不想加進去,所以我就把那三行刪掉,存檔並離開便可「把部份內容加到暫存區」。看一下目前的狀態:
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: index.html
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: index.html
index.html
這個檔案就有部份在暫存區,同時也有一份有包括那三行的版本放在工作目錄。這樣一來就可以只先 Commit 部份的內容了。
在 SourceTree 做這件事相對的比較簡單一些,用滑鼠選取想要加入的內容,按滑鼠右鍵選擇「Stage Selected Lines」,然後就搞定了。
Comments