章節 ▾ 第二版

A3.5 附錄 C:Git 命令 - 分享和更新專案

共享和更新專案

Git 中很少有命令會訪問網路,幾乎所有的命令都作用於本地資料庫。當你準備好分享你的工作或從其他地方拉取更改時,有幾個命令是用來處理遠端倉庫的。

git fetch

git fetch 命令會與遠端倉庫通訊,並下載你當前倉庫中沒有的該遠端倉庫中的所有資訊,並將其儲存在你的本地資料庫中。

我們首先在 從遠端倉庫獲取和拉取 中介紹這個命令,並在 遠端分支 中繼續看它的使用示例。

我們也在 貢獻專案 的幾個示例中使用它。

我們在 拉取請求引用 中使用它來獲取預設空間之外的單個特定引用,並在 打包 中瞭解如何從包中獲取。

我們在 引用規範 中設定了高度自定義的引用規範,以便讓 git fetch 執行與預設值略有不同的操作。

git pull

git pull 命令基本上是 git fetchgit merge 命令的組合,Git 會從你指定的遠端倉庫獲取,然後立即嘗試將其合併到你當前的分支中。

我們在 從遠端倉庫獲取和拉取 中快速介紹它,並展示如何在 檢查遠端倉庫 中檢視它將合併的內容。

我們還將在 Rebase When You Rebase 中瞭解如何使用它來幫助解決 Rebase 的困難。

我們將在 檢出遠端分支 中展示如何使用 URL 以一次性的方式拉取更改。

最後,我們在 提交簽名 中簡要提到,你可以使用 --verify-signatures 選項來驗證你拉取的提交是否經過 GPG 簽名。

git push

git push 命令用於與另一個倉庫通訊,計算出你的本地資料庫中有而遠端倉庫中沒有的內容,然後將差異推送到另一個倉庫。它需要對另一個倉庫的寫訪問許可權,所以通常會經過某種身份驗證。

我們首先在 推送到遠端倉庫 中介紹 git push 命令。在這裡,我們涵蓋了將分支推送到遠端倉庫的基礎知識。在 推送 中,我們更深入地瞭解了推送特定分支,在 跟蹤分支 中,我們瞭解瞭如何設定跟蹤分支以自動推送。在 刪除遠端分支 中,我們使用 --delete 標誌透過 git push 在伺服器上刪除分支。

在整個 貢獻專案 中,我們看到了幾個使用 git push 透過多個遠端倉庫分享分支上工作的示例。

我們在 分享標籤 中使用 --tags 選項來分享你建立的標籤。

釋出子模組更改 中,我們使用 --recurse-submodules 選項來檢查我們所有的子模組工作都已釋出,然後再推送主專案,這在使用子模組時可能非常有用。

其他客戶端鉤子 中,我們簡要討論了 pre-push 鉤子,這是一個我們可以在推送完成之前執行的指令碼,以驗證推送是否應該被允許。

最後,在 推送引用規範 中,我們研究了使用完整的引用規範進行推送,而不是通常使用的通用快捷方式。這可以幫助你非常具體地指定你想分享的工作。

git remote

git remote 命令是用於管理遠端倉庫記錄的管理工具。它允許你將長 URL 儲存為簡短的控制代碼,例如“origin”,這樣你就不用每次都輸入它們了。你可以有幾個這樣的控制代碼,git remote 命令用於新增、更改和刪除它們。

這個命令在 使用遠端倉庫 中有詳細介紹,包括列出、新增、刪除和重新命名它們。

它在本書幾乎隨後的每個章節中都會用到,但總是以標準的 git remote add <name> <url> 格式。

git archive

git archive 命令用於建立一個專案特定快照的歸檔檔案。

我們在 準備釋出 中使用 git archive 為專案建立一個 tarball 以供分享。

git submodule

git submodule 命令用於管理普通倉庫中的外部倉庫。這可以是庫或其他型別的共享資源。submodule 命令有幾個子命令(addupdatesync 等)用於管理這些資源。

這個命令僅在 子模組 中提及並完全涵蓋。