Git——Git Fetch 和 Git Pull 的区别
Git Fetch 是告诉本地存储库远程存储库中有可用更改而不将更改带入本地存储库的命令。另一方面,Git Pull 将远程目录更改的副本带入本地存储库。让我们借助一个示例分别看一下 Git Fetch 和 Git Pull。
Git 获取
让我们创建一个名为demo.txt的文件,其中包含“ Hello Geeks”内容,将目录初始化为 git 存储库,并将更改推送到远程存储库。
- git init
- git add
- git commit -m
- git remote add origin
- git push origin
现在,我们在远程存储库中有我的demo.txt 。
本地和远程存储库现在同步并且在两个地方具有相同的内容。现在让我们更新远程存储库中的demo.txt 。
现在,由于我们已经远程更新了demo.txt ,让我们将更改带到本地存储库。我们的本地存储库只有 1 个提交,而远程存储库现在有 2 个提交(观察从4c4fcb8开始的第二个提交)。让我们使用git fetch命令在本地存储库中查看远程存储库是否有更改。在此之前,让我们使用git log命令查看我们之前的提交。
我们可以看到,在使用git fetch之后,我们得到了在远程存储库中完成了一些提交的信息。 (注意4c4fcb8是我们在远程存储库中第二次提交的首字母)。要将这些更改合并到我们的本地存储库中,我们需要使用git merge origin/
让我们看看我们在本地存储库中的提交,使用 git log命令。
我们在本地存储库中获得了远程存储库提交。这就是 git fetch 的工作原理。现在让我们看一下git pull命令。
Git 拉取
让我们对远程存储库中的 demo.txt 文件进行更多更改。
现在,我们在远程存储库中有 3 次提交,而在本地存储库中有 2 次提交。 (注意以09d828f开头的第三次提交)。现在让我们使用git pull origin
我们可以看到,在git pull命令的帮助下,我们直接获取远程存储库并将其与本地存储库合并。
git pull = git fetch + git merge
让我们看看本地存储库中的 demo.txt 是什么样子——
现在我们的远程和本地存储库再次彼此同步。所以,从上面的例子中,我们可以得出结论——
差异表
Git Fetch | Git Pull |
---|---|
Gives the information of a new change from a remote repository without merging into the current branch | Brings the copy of all the changes from a remote repository and merges them into the current branch |
Repository data is updated in the .git directory | The local repository is updated directly |
Review of commits and changes can be done | Updates the changes to the local repository immediately. |
No possibility of merge conflicts. | Merge conflicts are possible if the remote and the local repositories have done changes at the same place. |