在讨论这两个命令之间的区别之前,让我们先强调一下它们的相似之处:它们都用于从远程存储库下载新数据。
下载数据是您日常工作中必不可少的步骤—因为您在本地存储库中查看的远程数据只是一个“快照”。它只与您上次通过“fetch”或“pull”从远程显式下载新数据时一样最新。在检查远程分支和提交时,记住这一点是至关重要的!
现在让我们看看“fetch”和“pull”之间细微但重要的区别。
Fetch
git fetch origin
Git fetch实际上只从远程存储库下载新数据—但它不会将这些新数据集成到工作文件中。Fetch对于获取在远程存储库中发生的所有事情的新视图非常有用。
由于它的“无害”性质,您可以放心:fetch永远不会操纵、破坏或搞砸任何东西。这意味着你总是拿不够。
Pull
git pull origin master
相比之下,git pull的使用有一个不同的目的:用远程服务器的最新更改来更新你当前的HEAD分支。这意味着pull不仅可以下载新数据;它还直接集成到您当前的工作副本文件。这有几个结果:
由于“git pull”尝试将远程更改与本地更改合并,因此可能会发生所谓的“合并冲突”。查看我们关于如何处理合并冲突的深入教程以获取更多信息。
像许多其他的操作,它是强烈建议开始“git pull”只有一个干净的工作副本。这意味着在拉取之前不应该有任何未提交的局部更改。使用Git的Stash特性来临时保存您的本地更改。