加州提子面包

git学习笔记✔️03

[TOC]

注意: 本文是根据 廖雪峰的官方网站的Git教程 的学习笔记

『第十节课』 分支管理-创建与合并分支

每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长。

当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上。

假如我们在dev上的工作完成了,就可以把dev合并到master上。Git怎么合并呢?最简单的方法,就是直接把master指向dev的当前提交。

合并完分支后,甚至可以删除dev分支。删除dev分支就是把dev指针给删掉,删掉后,我们就剩下了一条master分支。

Git鼓励大量使用分支:

查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

1
2
3
$ git branch dev
$ git checkout dev
Switched to branch 'dev'

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>

操作演示:

『第十一节课』解决冲突

操作演示:

使用 git log --graph --pretty=oneline --abbrev-commit 可以查看分之合并情况:

『第十二节课』Bug分支

Bug的出现可以通过新建临时的分支来修复Bug,修复之后,合并分支,然后将临时分支删除掉。

操作演示:

重点: 当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场。

『第十三节课』Feature分支

当开发新功能的时候推荐使用Feature分支。在这个新建的Feature分支上开发,完成功能开发之后合并分支,最后将Feature分支删除掉。

如果要丢弃一个没有被合并过的分支,可以通过 git branch -D <name> 强行删除。

『第十四节课』多人协作

可以通过 git remote 命令查看远程仓库的信息;也可以通过 git remote -v 显示更详细的信息。如下图显示。

推送分支

可以通过命令 git push origin master 制定推送到远程仓库的对应远程分支。

注意:

  • master 分支是主分支,因此要时刻与远程同步
  • dev 分支是开发分支,开发新功能都在这上面实现,所以也要时刻保持同步
  • bug 分支主要记录着修复的bug分支,没必要同步
  • feature 分支同步与否视情况而定,假如开发的功能和别人一起完成就需要同步到上面去

从远端仓库拉去代码

执行如下命令:

1
2
3
4
5
6
7
git clone https://github.com/GiHccTpD/test-learn-git
Cloning into 'test-learn-git'...
remote: Counting objects: 46, done.
remote: Compressing objects: 100% (26/26), done.
remote: Total 46 (delta 16), reused 45 (delta 15)
Receiving objects: 100% (46/46), 15.69 KiB | 6 KiB/s, done.
Resolving deltas: 100% (16/16), done.

从远端仓库拉取的代码,,默认情况下,只能看到 master 分支,可以通过 git branch 命令查看:

1
2
$ git branch
* master

当需要在 dev 分支上开发的时候, 需要先将 origindev 分支拉取到本地,命令如下:

git checkout -b dev origin/dev

当需要吧 dev 分支 push 到远端仓库的时候

1
2
3
4
$ git commit -m "add /usr/bin/env"
[dev 291bea8] add /usr/bin/env
1 file changed, 1 insertion(+)
$ git push origin dev

总结:

在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致

建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name

从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

------ 本文结束 ------