git分支管理小结

Posted sminocence

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git分支管理小结相关的知识,希望对你有一定的参考价值。

之前在使用git的时候,大部分的用处都是用来将自己本地的代码上传至github上。但是近期在做点小项目的时候,发现用到分支的地方,还是挺多的。

这是今天自己看了《github入门与实践》那本书,跟着书上的步骤实践了一番,发现又学到一部分东西。废话不多说,进入正题。

先在本地目录C:/gitTest1下,创建本地仓库。
初始化仓库:

git init

创建README.md文件

touch README.md

然后在这个md文件中添加几行,然后从工作树提交到暂存区

git add README.md

然后将暂存区的改动提交到本地仓库中

git commit -m"add change"

此时可以通过git branch查看本地分支数。可以发现此时本地仓库中只有master一个分支。
可能你们觉得在一个分支上开发没有多大的意思,想再创建几个分支进行开发。
可以通过下面的命令:

git checkout -b feature-A

这个命令相当于

git branch feature-A
git checkout feature-A

上面命令的意思就是创建feature-A分支,并将当前分支切换为feature-A分支。如果在这个分支中修改然后再进行提交,这些改动就被提交到feature-A分支下了。
此时切换到master分支下:

git checkout master

发现还是原来的状态,并没有被改动。这正是在开发中创建分支的优点,不同分支之间不会影响。只要创建多个分支,可以在互不影响的情况下同时进行多个功能的开发。
现在我们来看一下,如果之前创建了feature-A分支并提交了,此时就会有两个分支:master和feature-A分支。master分支是Git默认的分支,主干分支,比较重要的代码发布在这个分支上,此时feature-A分支的任务假如已经完成了,此时需要合并到master分支上。
首先切换到master分支上。

git checkout master

然后合并feature-A分支,为了在历史记录中记录本次分支合并记录,最好使用下面的命令:

git merge --no-ff feature-A

执行上面的命令之后,如果想查看分支合并记录,可以通过图表形式查看:

git log --graph

到这里基本上,本地的基本任务已经完成了。
下面开始进行远程仓库的事情了。
首先在自己的github上创建一个仓库,此时不要勾选创建README.md选项。
我们需要添加远程仓库:

git remote add origin [email protected]:sminocence/git-tu.git

这个命令将它设置成本地仓库的远程仓库,会将远程仓库的名称设置为origin(标识符)。

假定我们是在master分支下执行下面的命令

git push -u origin master

执行上述命令之后,当前分支的内容就会被推送给远程仓库的origin的master分支。当然除了master分支之外,远程仓库也可以创建其他分支,举个例子,我们在本地仓库中创建feature-D分支,并将它以同名的形式push至远程仓库。

git checkout -b feature-D
git push -u origin feature-D

现在远程仓库的github页面就可以查看到feature-D分支了。
现在我们从实际开发者的角度出发,在另一个目录下D:/gitTest下新建一个本地仓库,从远程仓库获取内容。这就相当于我们刚刚执行过push操作的目标仓库又有了另一名新开发者来共同开发。
git clone :获取远程仓库
首先我们换到其他目录下,将github上的仓库clone到本地。注意不要与之前操作的仓库在同一目录下。

git clone [email protected]:sminocence/git-tu.git

执行git clone命令之后我们会默认处于master分支下,同时自动将origin设置成该远程仓库的标识符。我们可以用下面的命令查看本地仓库和远程仓库的分支信息。

git branch -a

我们还可以将feature-D分支获取到本地仓库。

git checkout -b feature-D origin/feature-D

上述命令是以名为origin的仓库的feature-D分支为来源,在本地仓库中创建feature-D分支.
然后我们可以查看一下这个目录下的本地的分支:master,feature-D。
我们可以在feature-D分支下进行改动并提交。然后将其推送到feature-D分支。

git push

git pull 获取最新的远程仓库分支
我们放下刚刚操作的这个目录,回到之前的那个目录下,这边的本地仓库中只创建了feature-D分支,并没有在这个分支中进行任何提交,然而远程仓库的feature-D分支已经有了我们刚刚推送的提交。这时,我们可以使用git pull命令,将本地的feature-D分支更新到最新状态。当前分支为feature-D分支。

git pull origin feature-D

总结一下:
(1)我们在本地的一个目录A下进行开发,然后推送了master和feature-D两个分支(git push -u origin feature-D).
(2)然后我们又在本地的另一个目录B下,clone了之前推送的那个远程仓库,然后
git checkout -b feature-D origin/feature-D,获取远程的feature-D分支到本地,此时本地就有了master和feature-D两个分支,然后在B这个目录下进行了改动、提交以及推送到远程仓库的feature-D分支下;
(3)此时之前A那个目录下,feature-D分支就不是最新的状态了。此时通过git pull origin feature-D获取最新的远程仓库分支。这时候,这个A目录下的feature-D分支就是最新的状态了。这两个目录就相当于两个开发者。就可以同时在同一个分支中进行作业,不断给feature-D增加新功能。
今天先总结到这里,如果有任何意见,欢迎评论指正,谢谢。

以上是关于git分支管理小结的主要内容,如果未能解决你的问题,请参考以下文章

git分支管理小结

Git分支管理小结

git 小结

git分布式详解

git merge 和 git rebase 小结(转)

git merge 和 git rebase 小结