Git Fetch:大師班

已發表: 2023-02-26
Linux 筆記本電腦顯示終端窗口,背景為地球圖案和二進制水印
fatmawati achmad zaenuri/Shutterstock.com
git fetch 命令類似於 git pull 命令,它使用信息更新本地存儲庫並從遠程存儲庫提交,而不會覆蓋您的工作文件。

Git fetch命令讓您三思而後行。 您可以發現對遠程存儲庫進行了哪些更改,但不會用遠程文件覆蓋本地文件。

目錄

什麼是 git fetch,它有什麼作用?
Git 獲取與拉取
使用 git fetch 同步本地和遠程存儲庫
查看所有提取的標籤
先做試運行
如何獲取單個分支
獲取所有分支
比較本地和遠程分支
將本地分支與遠程分支同步
訓練有素的小狗

什麼是 git fetch,它有什麼作用?

Git 中的fetch命令將提交、文件和其他信息從遠程存儲庫安全地下載到本地存儲庫。 當您想查看其他開發人員所做的更改而不被迫接受更改時,請使用 fetch。 您的本地文件保持不變。 為什麼這很重要?

當您作為開發團隊的一員工作時,您必須保持頭腦清醒。 遠程或中央存儲庫將包含其他開發人員創建並推送到遠程存儲庫的更改和新分支。

完全有可能有人更新了您在計算機上本地修改的文件的遠程副本。 如果您不經意地執行git pull來更新您的本地存儲庫,您可能會發現自己正在處理您可能不想要的更改的合併。

下載信息後,您可以檢查它並查看更改內容。 這使您可以就現在要合併的內容(如果有的話)以及要推遲到以後合併的內容做出明智的選擇。

Git 獲取與拉取

git fetch命令的行為類似於git pull命令,但沒有覆蓋本地文件的步驟。 您的本地存儲庫已更新和同步,但更改不會寫入本地存儲庫的工作狀態,因此您的文件保持不變。

或者,換句話說, git pull命令就像一個git fetch緊跟著一個git merge

使用 git fetch 同步本地和遠程存儲庫

要從遠程存儲庫獲取所有更新的元數據和提交到本地存儲庫,請使用帶有遠程存儲庫名稱或 URL 的git fetch命令。 默認情況下,第一個遠程存儲庫稱為“源”。

 git 獲取來源

如果您使用的是單個遠程存儲庫,則可以省略“來源”一詞。

 git 獲取

在默認的遠程倉庫上使用 git fetch 命令

這會從“原始”存儲庫中檢索任何更新,但不會將更改合併到工作文件中。 我們可以看到已經為我們檢索了一個名為“new-branch”的新分支。

使用fetch命令後,您可以通過將-r (遠程)選項與 branch 命令一起使用來查看遠程分支的完整列表。

 git 分支 -r 

查看默認遠程上存在的分支

這列出了遠程知道的所有分支,在fetch之後,它們也在您的本地存儲庫中。

查看所有提取的標籤

同樣,您可以使用tag選項(注意,它是不帶“s”的“標籤”)來查看標籤列表。

 混帳標籤

使用 git tag 命令列出本地倉庫中的標籤

相關:如何切換、添加和刪除 Git 遙控器

先做試運行

儘管git fetch不會將更改合併到您的工作文件中,但它仍會更新您的本地存儲庫。 如果您想查看fetch命令將執行哪些更改,而不實際進行更改,請使用--dry-run選項。

 git fetch --dry-run 

使用 --dry-run 選項查看 fetch 命令將檢索的更改

如何獲取單個分支

獲取有關單個分支的信息很容易。 將分支的名稱添加到命令行以告訴fetch你只需要知道那個分支。

在這裡,我們告訴fetch從遠程存儲庫“origin”檢索分支“mary-feature”。

 git fetch origin 瑪麗特徵

使用 git fetch 獲取單個遠程分支

現在遠程分支的詳細信息和內容都在您的本地存儲庫中,您可以使用git checkout命令創建一個新分支並檢出遠程分支。 如果這是您第一次使用此分支,這不會覆蓋任何現有文件。

 git checkout -b mary-feature origin/mary-feature 

安全地將檢索到的遠程分支簽出到新的本地分支

獲取所有分支

如果您使用多個遙控器,您可以通過使用--all選項將所有分支的所有更改拉回本地存儲庫來節省時間。

 git fetch --all

比較本地和遠程分支

要查看遠程分支中的文件與本地副本有何不同,請使用git fetch ,然後使用git log命令。

請注意,本地和遠程分支有兩個句點“ .. ”將它們分開。 --oneline選項顯示提交標識符和提交消息。

 git 獲取
git log --oneline mary-feature..origin/mary-feature 

使用 git 獲取遠程更改並使用 git log 顯示更改

如果分支包含大量更改,則單行顯示很有用。 要查看更多信息,請省略--oneline選項。

 git log mary-feature..origin/mary-feature 

省略 --oneline 選項,以便 git 顯示每個提交的更多詳細信息

這向我們顯示了每次提交的時間和日期,以及提交消息和更改作者的詳細聯繫信息。

將本地分支與遠程分支同步

如果您決定要繼續並將更改從遠程分支合併到本地工作文件,則可以使用這些命令。

我們將檢查分支以確保我們正在工作它是我們當前的工作分支..

 git checkout 瑪麗功能

檢查一個分支

該分支已為我們簽出,我們被告知它落後於遠程版本。 我們可以使用git pull來更新它,然後使用git status檢查我們的狀態。

 混帳拉
混帳狀態

從 rmeote 倉庫拉取修改到本地

如果我們對本地文件進行了一些更改,Git 會在我們檢出分支時通知我們需要執行git pull才能開始合併。

 git checkout 瑪麗功能

Git通知我們本地和遠程brnahces已經分叉,需要合併

一個簡單的git pull啟動檢索文件和合併的過程,或者我們可以直接使用git merge本身。 我們首先要確保我們使用的是正確的分支

git checkout 瑪麗功能

Git通知我們本地和遠程brnahces已經分叉,需要合併

我們將告訴git將我們當前的分支與遠程存儲庫中的分支合併,有六個不同的提交需要解決。

合併成功的消息

我們需要告訴 Git 我們要合併哪個遠程分支。

 git 合併 origin/mary-feature 

使用 git merge 將遠程分支合併到本地分支

編輯器打開,允許我們提供提交消息。 我們可以接受建議的消息,或添加我們自己的消息。 該編輯器是您的默認編輯器,除非 Git 已配置為使用不同的編輯器。

編輯提交信息

準備好繼續時保存更改。 當編輯器關閉時,合併會自動進行。

我們的合併是成功的,因為沒有衝突。

合併成功的消息

當兩個或多個開發人員更改相同的代碼行時,就會出現衝突。 如果是這種情況,Git 會在受影響的文件中標記衝突。 您需要依次查看它們並選擇要保留的更改。

訓練有素的小狗

就像訓練中的小狗一樣, fetch會取回你要的東西,但不會丟掉它。 如果你真的想要小狗給你看的東西,你需要pull

相關: Git rebase:你需要知道的一切