git fetch origin master 和 git pull origin master 区别

347 阅读2分钟

git fetch origin mastergit pull origin master 都是 Git 命令,用于从远程仓库获取更新,但它们之间有一些关键的区别。

git fetch origin master

当你执行 git fetch origin master 时,Git 会从名为 origin 的远程仓库获取 master 分支的最新提交,但不会自动合并或更改你当前的工作目录或任何本地分支。这些更新会被存储在本地仓库的一个特殊位置,称为“远程跟踪分支”(remote-tracking branch)。

具体来说,如果你执行 git fetch origin master,Git 会创建一个名为 origin/master 的远程跟踪分支,这个分支会指向 origin 仓库中 master 分支的最新提交。你可以使用 git log origin/master 来查看这些更新,但你的当前分支(比如 master)不会改变。

git pull origin master

git pull 命令实际上是 git fetch git merge 的组合。当你执行 git pull origin master 时,Git 会首先执行 git fetch origin master 来获取远程仓库的更新,并创建一个名为 origin/master 的远程跟踪分支。然后,Git 会尝试将这些更新合并到你当前的分支(假设你当前在 master 分支上)。

这意味着,执行 git pull origin master 后,你的本地 master 分支会包含从远程 origin 仓库 master 分支获取的所有更新,并且这些更新会自动合并到你的本地 master 分支。

注意:在执行 git pull 时,如果有冲突发生(即你的本地更改与远程更新不兼容),Git 会停止合并过程并让你手动解决冲突。解决冲突后,你需要提交合并的结果。

总结

git fetch origin master 只获取远程更新,但不合并到当前分支。 git pull origin master 获取远程更新,并尝试将这些更新合并到当前分支。

通常,推荐先使用 git fetch 查看远程更新,然后再决定是否使用 git merge 或 git rebase 将这些更新合并到本地分支。这样可以避免不必要的合并冲突,并给你更多的控制权。