本文主要是介绍git push VS git fetch,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近我们研发团队所有项目源码的版本管理实现了统一化,全部统一采用git进行管理,丢弃svn。在使用git的过程中,遇到了git pull和git fetch两个命令,针对具体含义与区别比较模糊,进而进行了学习与总结。
要想搞清楚git pull和git fetch的区别,我们需要弄明白git的架构,它是分布式的版本管理系统。
上图展示了git的整体架构,以及和各部分相关的主要命令。先说明下其中涉及的各部分。
1、工作区(working directory)
简言之就是你工作的区域。对于git而言,就是的本地工作目录。工作区的内容会包含提交到暂存区和版本库(当前提交点)的内容,同时也包含自己的修改内容。
2、暂存区(stage area, 又称为索引区index)
是git中一个非常重要的概念。是我们把修改提交版本库前的一个过渡阶段。查看GIT自带帮助手册的时候,通常以index来表示暂存区。在工作目录下有一个.git的目录,里面有个index文件,存储着关于暂存区的内容。git add命令将工作区内容添加到暂存区。
3、本地仓库(local repository)
版本控制系统的仓库,存在于本地。当执行git commit命令后,会将暂存区内容提交到仓库之中。在工作区下面有.git的目录,这个目录下的内容不属于工作区,里面便是仓库的数据信息,暂存区相关内容也在其中。这里也可以使用merge或rebase将远程仓库副本合并到本地仓库。图中的只有merge,注意这里也可以使用rebase。
4、远程版本库(remote repository)
与本地仓库概念基本一致,不同之处在于一个存在远程,可用于远程协作,一个却是存在于本地。通过push/pull可实现本地与远程的交互。
5、远程仓库副本
可以理解为存在于本地的远程仓库缓存。如需更新,可通过git fetch/pull命令获取远程仓库内容。使用fech获取时,并未合并到本地仓库,此时可使用git merge实现远程仓库副本与本地仓库的合并。git pull 根据配置的不同,可为git fetch + git merge 或 git fetch + git rebase。
这篇关于git push VS git fetch的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!