Git Fetch 和 Git Pull 的區別
本文將討論 git pull
和 git fetch
命令的實際用途,以瞭解它們有何不同以及何時使用它們。
什麼是 Git Fetch
在我們的遠端倉庫中,我們有如下所示的檔案。
請注意,我們的遠端和本地倉庫是同步的。讓我們更改遠端倉庫中的 Sample.txt
檔案。
在檔案中隨機寫入一些內容並提交更改。
此時,我們的遠端倉庫有兩個提交,而我們的本地倉庫有一個提交。這意味著我們的本地倉庫需要更新。
在這一點上,git fetch
很方便。讓我們執行一個 git log
命令來檢查我們在本地倉庫中的提交歷史記錄。
我們的本地倉庫沒有 Updated Sample.txt
提交。我們使用 git fetch
檢查更改。
pc@JOHN MINGW64 ~/Git/Delftscopetech (main)
$ git fetch
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 709 bytes | 2.00 KiB/s, done.
From https://github.com/Wachira11ke/Delftscopetech
c43169e..2445daf main -> origin/main
從上面的命令中,我們可以看到遠端倉庫對主分支的更改。我們可以使用 git merge
命令將這些更改應用到我們的本地倉庫。
pc@JOHN MINGW64 ~/Git/Delftscopetech (main)
$ git merge origin main
Updating c43169e..2445daf
Fast-forward
Sample.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
讓我們執行 git log
命令來檢查我們的提交歷史。
$ git log
commit 2445dafc118748a5cb53c5262b393ab0e1a9e235 (HEAD -> main, origin/main, origin/HEAD)
Author: Wachira11ke <100116527+Wachira11ke@users.noreply.github.com>
Date: Tue Mar 15 22:07:11 2022 +0300
Update Sample.txt
First Update
commit c43169e587ab7ab996087ff460e54032e83030f0
Author: Wachira11ke <100116527+Wachira11ke@users.noreply.github.com>
Date: Tue Mar 15 21:45:50 2022 +0300
Second commit
commit b2f77108396c9ae867d8e9d69c575eda99dd1436
Author: Wachira11ke <100116527+Wachira11ke@users.noreply.github.com>
Date: Mon Feb 21 10:00:23 2022 +0300
Initial commit
此時,我們的本地和遠端倉庫都是同步的。讓我們看一下 git pull
命令。
什麼是 Git 拉取
讓我們回到我們的遠端倉庫並對我們的檔案進行更多更改。寫一個隨機數字並提交更改。
現在,我們的遠端倉庫比本地倉庫多了一個提交。我們可以執行 git pull
命令來更新我們的本地倉庫。
pc@JOHN MINGW64 ~/Git/Delftscopetech (main)
$ git pull origin main
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 730 bytes | 3.00 KiB/s, done.
From https://github.com/Wachira11ke/Delftscopetech
* branch main -> FETCH_HEAD
2445daf..8089f2b main -> origin/main
Updating 2445daf..8089f2b
Fast-forward
Sample.txt | 1 +
1 file changed, 1 insertion(+)
我們的本地倉庫現在與我們的遠端倉庫保持同步。我們可以得出結論,git pull
是一個複合命令 (git fetch
+ git merge
)。
它直接獲取併合並更改。
Git Fetch 和 Git Pull 的區別
git fetch |
git pull |
---|---|
檢查對遠端倉庫所做的更改。 | 直接將遠端倉庫中的更改與本地倉庫合併。 |
獲取的更改將更新到 .git 資料夾。 |
直接對你的本地倉庫進行更改。 |
你可以在合併之前檢視提交。 | 你將立即更新更改。 |
衝突很少出現。 | 可能會發生合併衝突。 |
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedIn