git入门-分支
2016-06-28 12:47
225 查看
1. git分支简介
使用分支可以让你从开发主线上分离开来,然后在新的分支上解决特定问题,同时不会影响主线。像其它的一些版本控制系统,创建分支需要创建整个源代码目录的副本。而Git 的分支是很轻量级的,因为Git保存的不是文件差异,而是一系列文件快照。在Git提交时,会保存一个commit对象,该对象包含一个指向暂存内容快照的指针,Git 会先计算每一个子目录的校验和( SHA-1 哈希字串),然后在 Git 仓库中将这些目录保存为树(tree)对象。之后 Git 创建的提交对象,除了包含相关提交信息以外,还包含着指向这个树对象的指针,如此它就可以在将来需要的时候,重现此次快照的内容了。Git 中的分支,其实本质上是个指向 commit 对象的可变指针,Git 会使用 master 作为分支的默认名字,它在每次提交的时候都会自动移动,指向最后一次提交对象。Git使用一个名为HEAD的指针,指向你正在工作的本地分支,这样你就可以知道当前在哪个分支下面工作。
2. 创建分支
3. 切换分支
ps:可以加上-b参数
现在切换到master分支
4. 合并分支
使用dev分支完成一些需求后,需要回到开发主线把它合并到master分支。合并时出现了“Fast-forward”的提示,因为当前master分支所在的提交对象是要并入的分支dev的直接上游,换句话说,如果顺着一个分支直走下去可以到达另一分支的话,合并两者时不存在任何需要解决的分歧,只需简单的移动指针,这种合并过程称为“Fast-forward”。如果当前master分支所指向的提交对象不是dev分支的直接祖先,Git需要做一些额外处理,Git会用两个分支的末端和它们的共同祖先进行一次简单的三方合并,并做一个新的快照,自动创建一个指向它的提交对象。这个对象有两个祖先,即之前两个分支的末端。合并之后,dev分支和master分支指向同一位置,master分支指向的提交对象就是最新的修改了。
如果不同分支修改了同一文件,合并时可能会遇到冲突,此时Git做了合并,但是并没有提交。使用git status查看哪些文件发生了冲突。解决了所有的冲突后,执行git add将它们添加到暂存区域,因为一旦暂存就表示冲突已解决,然后使用git commit完成这次合并的提交。
5. 删除分支
6. 分支管理
6.1 列出当前所有分支的清单6.2 查看各个分支最后一个提交对象的信息
7. 远程分支
7.1 查看远程分支即把本地分支推送到远程
7.3 同步远程服务器上的数据到本地
从远程拉取dev分支到本地,并切换到dev分支,ps:需要git1.6.2以上版本
git push origin local:remote
7.6 删除远程分支
8. 分支的衍合
把一个分支整合到另一个分支有两种方法:merge和rebase(衍合)前面已经介绍过,merge是把两个分支最新的快照和二者最新的共同祖先进行三方合并,产生一个新的提交对象。rebase是回到两个分支的共同祖先,根据要进行衍合的分支dev的历次提交对象,生成一系列文件补丁,然后以主干分支master的最后一个提交对象为新的出发点,逐个应用dev分支准备好的补丁文件,生成一个新的提交对象,改写dev的提交历史,使dev成为master的直接下游。然后回到master分支,进行一次快进合并。这样能够保持更加清晰的提交记录,就像没有使用过分支一样。
相关文章推荐
- Android刮彩票效果
- 用GDB调试程序
- 测试docker不同主机间容器互相访问
- spring编程式事务
- 关于EF6的记录Sql语句 与 EntityFramework.Extend 的诟病
- C++实现不可被复制的类
- 公用表表达式 (CTE)、递归
- Android中解析JSON总结
- 45、JavaScript的运动----链式运动----回调函数fn参数的添加
- 添物不花钱学计算机及编程(预备篇) - 计算机网络
- 添物不花钱学计算机及编程(预备篇) - 计算机网络
- 使用Spring处理一个RESTful请求
- JSON.stringify()、JSON.parse()和eval(string)
- 英语钻石法则(四)-----深入学习
- 常用有用的快捷键
- HDU 5038 Grade
- JSP实现验证码(利用tooltip进行消息提示)
- java中各种术语
- FPGA与simulink联合实时环路系列——实验三 按键key
- 【jmter】JDBC进行mysql数据库测试