【教程搬运】廖雪峰Git的使用教程(二)

5 分支管理

https://www.liaoxuefeng.com/wiki/896043488029600/896954848507552

5.1 创建与合并分支

创建分支:git branch (分支名)
切换分支:git checkout (分支名)或者git switch (分支名)
创建分支并切换到这个分支:git checkout -b (分支名) 或者git switch -c (分支名)
合并分支:首先要切换回master分支,然后使用git merge dev,就可以将dev融合到master分支里。
删除分支:git branch -d (分支名)
图1:查看、创建、切换分支

5.2 解决冲突

https://www.liaoxuefeng.com/wiki/896043488029600/900004111093344
图2:冲突发生的情况
比方说,我在dev分支里修改了readme.txt,然后又在master分支里修改了readme.txt。分别git add和commit在各自的分支里之后,尝试融合,就会出现如下的场景。终端里显示的内容是下面这个。
图3:未能融合——终端
而在原文里,会显示这样的场景。图4:未能融合——readme.txt
解决冲突的办法是单机上面第4行和第5行之间的选项。然后尝试git add和commit提交。
图5:合并后的结构图
在合并操作进行之后,就会有上面的结构图。我们可以使用下面的命令来看看命令历史和结构图。

#这一行是用来查看命令的历史。
git log
#这一行是用图表的方式来展示分支。
git log --graph
#如果你想省略掉无关的注释可以采用这一行命令
git log --graph --pretty=oneline --abbrev-commit

效果如图所示
图6:合并后命令历史
图7:分支冲突

5.3 分支管理策略

https://www.liaoxuefeng.com/wiki/896043488029600/900005860592480

合并分支有两种方式,第一种是fast forward模式,第二种是禁用fast forward模式。前者是默认的merge模式。

  1. fast-forward模式
    图7:fast-forward模式
    从图中可以看出,只要dev分支被删除,这个里面就只有一条线路,没有dev这个分支了。这样的合并只是单纯把master的指针指向了dev这一块。

  2. 禁用fast-forward模式
    图8:禁用fast forward模式
    从图中,可以看出,dev分支并没有被抹去,与master二者合并提交,创建出了一个新的commit。
    命令如下:

git merge --no-ff -m "merge with no-ff" dev

其中-m是因为要创建一个新的提交,所以要写一个提交注释。
图9:合并分支小结

5.4 Bug分支

https://www.liaoxuefeng.com/wiki/896043488029600/900388704535136

本节所讨论的技术适用于这样的场景,master分支上存在一个bug(同时也存在于dev分支上),我们正在dev分支上进行编辑,但是现在我们必须先修复bug,再编辑dev分支的任务,这之后再把dev分支上的bug(与master分支相同)修复。

第一步:你正在dev分支上进行编辑,然后master分支上有一个紧急需要你修复的bug。通过下面的命令来隐藏当前的状态。

#用于将当前的状态进行隐藏
git stash

第二步:在master上创建新的分支bug-1修复bug,通过add、commit完成提交,并merge到master分支上。

第三步:修复bug完毕,要回到dev分支上继续干活了。首先要查看之前存储的空间。

#用于查看之前存储的工作现场
git stash list

通常,系统会显示出如下场景:

$ git stash list
stash@{0}: WIP on dev: f52c633 add merge

第四步:恢复现场的两种方式。第一种是使用git stash apply,不过这种方式不会删除之前存储的dev分支工作现场,需要使用命令git stash drop手动删除;第二种是使用git stash pop

#这是第一种恢复现场的方法
git stash apply stash@{0}
#这是第二种恢复现场的方法
git stash pop

第五步:您现在已经修复了master分支上的bug,同时也继续回到了dev分支上进行编辑,但是dev分支上同样也是有问题的,因为本身dev分支就是从master分支上复制出来的,所以dev分支上的bug同样也需要修复。

我们发现,此前为了修复master分支,曾经创建了一个名为bug-1的分支,当时commit命令的命令号是可以查看的。

我们要切换回dev分支,然后我们通过下面的命令,就可以在dev分支上修复bug。

#在dev分支上修复bug
git cherry-pick (命令号)

图10:bug修复

5.5 丢弃未被合并的分支

https://www.liaoxuefeng.com/wiki/896043488029600/900394246995648

一个未被合并的分支,如果简单地使用git branch -d (分支名),并不能删除掉这个分支,如果想要强行删除未被合并的分支,必须使用下面的命令。

#删除未被合并的分支
git branch -D (分支名)

5.6 多人协作

https://www.liaoxuefeng.com/wiki/896043488029600/900375748016320

  1. 查看远程库的信息

要想查看远程库的信息,需要使用下面的命令。

#这是查看远程库的命令
git remote

如果想要查看详细的信息,就要使用下面的命令。

#详细地查看远程库的命令
git remote -v
  1. 推送本地分支到远程分支
#推送本地分支到远程仓库
git push (远程仓库名) (本地分支名)
  1. 抓取远程分支
#抓取远程的分支
git clone (仓库地址)

当然,这只能抓取到master分支,如果要抓取其他分支,还要使用下面的命令。

git checkout -b dev origin/dev
  1. 与其它工作人员同时编辑dev分支上的一个东西,发生冲突怎么办?
  • 将本地dev分支和远程dev分支进行关联。
git branch --set-upstream-to=origin/dev dev
  • 拉取远程最新的分支
git pull 

如果远程库和本地库合并有问题怎么办呢?那就参见前面的解决冲突的办法就可以了。 这部分内容在5.2节。

图11:多人协作
【未完待续】

5.7 Rebase

6 标签管理

6.1 创建标签

6.2 管理标签

7 使用Github

8 使用Gitee

9 自定义Git

9.1 忽略特殊文件

9.2 配置别名

9.3 搭建Git服务器

10 使用Source Tree

0 期末总结

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲤鱼王的成长之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值