分支
1.概念
在进行多个并行作业时,我们会用到分支。在这类并行开发的过程 中,往往同时存在多个最新代码状态从master分支创 建 feature-A分支和fix-B分支后,每个分支中都拥有自己的最新代码。 master分支是Git默认创建的分支,因此基本上所有开发都是以这个分 支为中心进行的。
从 master 分支创建 feature-A 分支和 fix-B 分支master,fix-Bfeature -A
不同分支中,可以同时进行完全不同的作业。等该分支的作业完成 之后再与 master分支合并比如 feature-A分支的作业结束后与 master 合并, 通过灵活运用分支,可以让多人同时高效地进行并行开发。
2.实际操作
2.1创建分支与切换分支
可以看到master分支左侧标有“*”(星号),表示这是我们当前所在的分支。也就是说,我们正在 master分支下进行开发。
git branch #浏览分支
合起来写
git checkout -b feature-A #创建,并把分支切换到feature-A
分开写
git branch feature-A #创建feature-A
git checkout feature-A #把分支切换到feature-A
feature-A分支左侧标有“*”,表示当前分支为 feature-A。在这个状 态下像正常开发那样修改代码、执行 git add命令并进行提交的话, 代码就会提交至feature-A分支。像这样不断对一个分支(例如 feature-A)进行提交的操作,我们称为“培育分支”。
试着在feature-A下进行写入文件操作;然后分别在master分支与feature分支下进行查看
开发中创建分支的优点:只要创建多个分支,就可以在不互相影响的情况下同时进行多个功能的开发。
切换回上一个分支
git checkout -
2.2特性分支与稳定分支
如master是稳定分支;feature-A与feature-B是特性分支
特性分支顾名思义,是集中实现单一特性(主题),除此之外不进 行任何作业的分支。在日常开发中,往往会创建数个特性分支,同时在 此之外再保留一个随时可以发布软件的稳定分支。稳定分支的角色通常 由 master 分支担当
之前我们创建了feature-A分支,这一分支主要实现feature-A,除 feature-A的实现之外不进行任何作业。即便在开发过程中发现了 BUG, 也需要再创建新的分支,在新分支中进行修正。
个人理解:
master分支的几个好处:
1.保存了最稳定的版本供人观看
2.在开发过程中,保存了最正确的版本,以免备份
有时我们需要让这个主干分支总是配置在正式环境中,有时又需要 用标签Tag 等创建版本信息,同时管理多个版本发布。拥有多个版本发 布时,主干分支也有多个
2.3合并分支
先切换到master分支
git checkout master
再执行
git merge --no-ff feature-A(合并分支名称:feature-A) #合并
若此时需要再提交b分支
git merge --no-ff fix-B
此时会出现发生冲突的问题,不解决冲突就无法完成合并。务必要仔细分析冲突部分的内容后再行修改
解决方式:用编辑器打开 README.md文件。我们在编辑器中将其改成想要的样子
然后用git add和git commit进行提交
2.4以图表形式查看分支
git log --graph
2.5提交分支
git push --set-upstream origin feature-A #先切换到master分支
2.6回溯历史版本
只要提供目标时间点的哈希值 A,就可以完全恢复至该时间点的状态。
查看哈希值使用
git reflog #查看当前仓库的操作日志。在日志中找出 回溯历史之前的哈希值
git reset --hard +哈希值 回到哈希值对应位置
2.7压缩历史
git rebase -i——压缩历史
2.8添加远程仓库
git remote add origin +远程仓库的地址
2.9推送至远程仓库
git push -u origin master
当前分支的内容就会被推送给远程仓库 origin的master分支。-u参数可以在推送的同时,将 origin仓库的 master分 支设置为本地仓库当前分支的upstream(上游)。添加了这个参数,将来 运行 git pull命令从远程仓库获取内容时,本地仓库的这个分支就可 以直接从 origin 的 master 分支获取内容,省去了另外添加参数的麻烦。
git push -u origin feature-D #推送分支到远程仓库
2.10获取远程仓库
git clone +地址
执行 git clone命令后我们会默认处于 master 分支下,同时系统 会自动将origin设置成该远程仓库的标识符。也就是说,当前本地仓库 的 master分支与 GitHub端远程仓库(origin)的 master分支在内容上是 完全相同的。
进入到文件夹内 cd +地址(git@github.com:********/test.git)这里面的地址是test
我们用 git branch -a命令查看当前分支的相关信息。添加 -a 参数可以同时显示本地仓库和远程仓库的分支信息。
2.11获取其他分支
其他分支
git checkout -b feature-D origin/feature-D
-b参数的后面是本地仓库中新建分支的名称。为了便于理解,我 们仍将其命名为 feature-D,让它与远程仓库的对应分支保持同名。新建 分支名称后面是获取来源的分支名称。例子中指定了origin/feature-D, 就是说以名为 origin的仓库(这里指 GitHub端的仓库)的 feature-D分 支为来源,在本地仓库中创建 feature-D 分支。
git pull #获取最新的远程仓库分支
2.12深入了解git的知识
最后再说,见pdf文档