Git Fetch 和 Git Pull 的区别
![Git Fetch 和 Git Pull 的区别](/img/Git/ag-feature-image---git-pull-vs-git-fetch.webp)
本文将讨论 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