Git远程分支

来源:互联网 发布:编程图标 编辑:程序博客网 时间:2024/06/06 00:25

前言

谈谈自己对git的分支的理解

正文

git和其他的一些CSV工具(svn)不同,它在本地有一个和服务器有相同结构的Git项目内容存在database中,这样的好处就是所有东西都是在本地的,不需要联网也能完成一些事情,最后只要push到服务器就可以了。


刚开始的本地电脑上什么Git项目也没有,我有两种方式创建我的Git项目。
途径一: clone一个远程仓库的Git项目,这个远程的项目可能已经有人在commit版本了,那么clone到本地以后与远程的对比图如下
这里写图片描述

经过clone的Git项目默认是origin来代表一个远程的仓库。在My Compuer图中可以看到有两个master,第一个master是远程下的一个主分支, 而第二个master才是本地仓库的主分支。 本地master已经和origin/master形成tracked的状态了,所以以后push还是pull都能推送到对应的分支上

途径二:本地创建一个项目,然后使用进入这个项目的根目录使用git init 命令初始化,会在根目录下创建一个隐藏的.git文件夹,在里面来记录以后你的Git项目的各种信息

当然创建好的项目里面的文件都是untracked状态,我们需要通过git add 来让它变成tracked状态(tracked分三种:unmodified,Modified,Staged,add是让files 变成Staged,这样下一次commit才能将staged area的内容形成快照)。以后我们对git项目的修改,删除,提交就是tracked(unmodified,modified,staged)、untracked状态的变化。

这个Git项目经过多次的commit以后形成一个一个的快照,master的Head也在随着提交在移动,这时候是时候将这个本地项目放到remote上面去了。使用git add remote [shortname] url 命令(url是你事先在github或者码云等项目托管网站创建的一个空项目的路径)。随后就可以使用命令git push [remote-name] [branch-name].


在和其他开发人员合作时,其他人会是不是的push一些版本到remote,这时候remote的结构和本地结构就不太一样了

remote和本地的对比图
这里写图片描述

仔细观察,本地的origin/master分支还停留在f4265这个版本,而remote因为有someone push了31b81和190a3两个新版本,所有remote的master实在190a3这个最后提交的版本上。
这时候我们需要做的就是使用git fetch (获取remote分支在本地没有的数据,但是注意它和git fetch不同,不会把本地master分支merge了),因此我们可以看到如下的图
这里写图片描述

因为不是使用git pull 而是使用git fetch所以在在My Computer这幅图中可以看到两个分支,自己所在的开发master分支的数据还是没有任何变化了,只有手动git merge origin/master才能将数据合并到master分支上,让origin/maser 和master在合并后产生一个新的节点上(同一条直线)

一般在多人合作的项目中,自己会创建一个分支并推送到remote上,以后再新建的这个分支上开发功能,如果需要将master分支的内容合并到该分支上,只需要checkout到本地的master分支,并pull对应tracked的remote分支内容,再checkout到新建的分支上,使用git merget master即可将内容合并

想要更加系统的学习git,请访问官方文档

0 0