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 "new information is updated"

注意! 永遠不要修改非最新提交,因為其他專案團隊成員或其他分支有可能是基於該提交的版本。在修改提交之後,他們的版本將會失去了參考,版本控制很難從中恢復。