Git Fetch:大師班
已發表: 2023-02-26 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 獲取
這會從“原始”存儲庫中檢索任何更新,但不會將更改合併到工作文件中。 我們可以看到已經為我們檢索了一個名為“new-branch”的新分支。
使用fetch
命令後,您可以通過將-r
(遠程)選項與 branch 命令一起使用來查看遠程分支的完整列表。
git 分支 -r
這列出了遠程知道的所有分支,在fetch
之後,它們也在您的本地存儲庫中。
查看所有提取的標籤
同樣,您可以使用tag
選項(注意,它是不帶“s”的“標籤”)來查看標籤列表。
混帳標籤
相關:如何切換、添加和刪除 Git 遙控器
先做試運行
儘管git fetch
不會將更改合併到您的工作文件中,但它仍會更新您的本地存儲庫。 如果您想查看fetch
命令將執行哪些更改,而不實際進行更改,請使用--dry-run
選項。
git fetch --dry-run
如何獲取單個分支
獲取有關單個分支的信息很容易。 將分支的名稱添加到命令行以告訴fetch
你只需要知道那個分支。
在這裡,我們告訴fetch
從遠程存儲庫“origin”檢索分支“mary-feature”。
git fetch origin 瑪麗特徵
現在遠程分支的詳細信息和內容都在您的本地存儲庫中,您可以使用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
如果分支包含大量更改,則單行顯示很有用。 要查看更多信息,請省略--oneline
選項。
git log mary-feature..origin/mary-feature
這向我們顯示了每次提交的時間和日期,以及提交消息和更改作者的詳細聯繫信息。
將本地分支與遠程分支同步
如果您決定要繼續並將更改從遠程分支合併到本地工作文件,則可以使用這些命令。
我們將檢查分支以確保我們正在工作它是我們當前的工作分支..
git checkout 瑪麗功能
該分支已為我們簽出,我們被告知它落後於遠程版本。 我們可以使用git pull
來更新它,然後使用git status
檢查我們的狀態。
混帳拉
混帳狀態
如果我們對本地文件進行了一些更改,Git 會在我們檢出分支時通知我們需要執行git pull
才能開始合併。
git checkout 瑪麗功能
一個簡單的git pull
啟動檢索文件和合併的過程,或者我們可以直接使用git merge
本身。 我們首先要確保我們使用的是正確的分支
git checkout 瑪麗功能
我們將告訴git
將我們當前的分支與遠程存儲庫中的分支合併,有六個不同的提交需要解決。
我們需要告訴 Git 我們要合併哪個遠程分支。
git 合併 origin/mary-feature
編輯器打開,允許我們提供提交消息。 我們可以接受建議的消息,或添加我們自己的消息。 該編輯器是您的默認編輯器,除非 Git 已配置為使用不同的編輯器。
準備好繼續時保存更改。 當編輯器關閉時,合併會自動進行。
我們的合併是成功的,因為沒有衝突。
當兩個或多個開發人員更改相同的代碼行時,就會出現衝突。 如果是這種情況,Git 會在受影響的文件中標記衝突。 您需要依次查看它們並選擇要保留的更改。
訓練有素的小狗
就像訓練中的小狗一樣, fetch
會取回你要的東西,但不會丟掉它。 如果你真的想要小狗給你看的東西,你需要pull
。
相關: Git rebase:你需要知道的一切