Git 教程 - 工作流程
正如我們上節學到的,新增檔案或提交檔案基本上需要兩個步驟。
-
將檔案新增到暫存區,命令如下,git add
$ git add test1.txt
file1.txt
將從工作區域新增到暫存區,並且它隨時可以被提交到倉庫。每當我們建立一個檔案時,它就在我們的工作區上(本地計算機上),然後在 git add
命令之後進入暫存區。
-
它會將你的暫存區中的所有檔案都推送到倉庫。git commit
$ git commit -m "commit message"
我們通常會提交內容的時候也新增描述資訊,比如我們在檔案或專案中所做的更改,這樣我們可以在將來獲取此提交的日誌記錄資訊。
git add
更改並儲存檔案後,我們計算機上的檔案與我們的倉庫中的檔案就有了不同,因為在倉庫中的檔案仍然是此次修改之前的內容。
如果你鍵入 git status
,可以看到 Git 已經知道你的檔案已被修改。
$ git status
On branch master
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: test1.txt
no changes added to commit (use "git add" and/or "git commit -a")
正如 Git 所建議的那樣,我們使用 git add
更新將要提交的檔案。
$ git add test1.txt
現在,你可以將此更新檔案從暫存區提交到倉庫。
有些時候,我們同時更新了多個檔案,我們當然可以用上面介紹的方式來新增所有的檔案,
$ git add test1.txt test2.txt test3.txt
但如果你有大量檔案或檔名太長,每個檔案加起來會有些繁瑣。Git 有一個快捷方式,可以將所有更新的檔案和未跟蹤的檔案新增到暫存區,
$ git add .
這裡,.
意思是與倉庫不同的所有檔案。
git commit
我們在介紹 Git 其他功能時已經講到了如何使用 git commit
。基本上來講,git commit
將暫存區推送到倉庫,強烈建議你新增提交訊息來描述此次提交更改的內容,因為以後你可以用 git log
命令來獲取所有的已提交日誌資訊。
直接提交到倉庫
在我們提交之前,我們需要將更改新增到暫存區。然後我們就可以提交它們到倉庫。但實際上有時我們不需要將它們新增到暫存區的這個中間步驟,因為我們知道這是我們最終專案想要的,倉庫或伺服器上的這些更改是每個專案成員都需要進行更新的。
所以我們可以做的是先檢查 git status
,來檢視工作區中修改了什麼。然後我們可以直接用 git commit
將這些修改提交到倉庫,不用將它們新增到暫存區。
$ git commit -a -m "commit message here."
我們這裡使用的是一個捷徑,不用將更改新增到暫存區。但這僅在某些情況下有用處,無論何時使用此命令,都需要小心,因為它將抓取工作區中的所有內容並將其直接推送到倉庫。
修改提交
我們可能在提交後遇到這種情況,我們在程式碼中發現了拼寫錯誤或其他微小錯誤。當然,你可以修改程式碼並再次將更改提交到倉庫。但是我們也可以做的就是我們重寫最近的一次提交,並且最新的提交將會被新的修改覆蓋。
git commit
後面的 --amend
標誌告訴 Git 這個提交將取代之前的提交,之前的提交以後不會在日誌訊息裡了。
$ git commit --amend -m "new information is updated"
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn