git学习笔记-2
2015-12-17 10:12
141 查看
22. 分支管理
多人协同工作,自己创建一个自己的分支, 别人看不到, 你在自己的分支上干活, 想提交就提交知道开发完毕,在一次性合并到master分支上, 这样既安全又不影响其他人工作
23. 创建与合并分支
原理:每次提交,git都把它们串成一条时间线,这条时间线就是一个分支。 截止到目前只有一条时间线,这个分支叫做主分分支master。 HEAD严格来说不是指向提交,而是指向master,master才是指向提交的。 所以HEAD指向的就是当前分支
a. 一开始master分支是一条线, git用master指向最新的提交,再用HEAD指向master,就能确定当前分支, 以及当前分支的提交点, 每次提交master分支都向前移动一步,这样,随着不断提交,master分支也越来越长
b. 当我们创建新分支(xiaoke),git新建了一个指针叫xiaoke, 指向master相同的提交, 再把HEAD指向xiaoke,就表示当前分支在xiaoke上。 所以说git创建一个分支很快,因为除了增加一个xiaoke指针,改改HEAD的指向,工作区文件没有任何变化。
c. 不过从现在开始,对工作区的修改和提交就是针对xiaoke分支了,比如新提交一次xioake指针向前移动一步,而master指针不变。 加入我们在xiaoke上的工作完成了,就可以把xiaoke合并到master上。最简单的方法就是把master指向xiaoke的当前提交,就完成了合并。
所以git合并分支也很快,就改了下指针,工作区内容不变
d. 合并完分支后,甚至可以删除xiaoke分支。删除xiaoke分支就是把xiaoke指针给删掉,删掉后,我们就剩下一条master分支
实现:
a.
1)创建xiaoke分支,然后切换到xiaoke分支
git checkout -b xiaoke
-b 参数表示创建并切换,相当于以下两条命令
git branch xiaoke
git checkout xiaoke
2)git branch查看当前分支, 这条命令会列出所有分支,当前分支前会标一个*号
3)xiaoke分支可以add,commit等。当xiaoke分支工作完成,切换回主分支git checkout master.
4)这时候查看发现在xiaoke分支上的工作并没有显现在master上。 这就需要把xiaoke分支的工作成果合并到master上: git merge xiaoke
git merge 用于合并指定分支到当前分支。这种合并是Fast-forward合并方式(把master指向xiaoke的当前提交,很快)
5. 合并完成就可以删除xiaoke分支了 git branch -d xiaoke
24. git鼓励大量使用分支
查看分支 git branch
创建分支 git branch <name>
切换分支 git checkout <name>
创建并切换 git checkout -b <name>
合并某分支到当前分支 git merge <name>
删除分支 git branch -d <name>
25. 解决冲突
a. check out -b newbranch //创建新分支newbranch
b. 在readme.txt 文件末尾加句话 “i hate you”//修改readme.txt 文件
c. git add readme.txt
d. git commit -m “add one word”
e. checkout master //切换回master分支
f. 重复b,c,d 步骤.
g. 这种情况下git无法快速合并,只能试图把各自的修改合并起来,但这种合并就有可能有冲突. 尝试一下: git merge newbranch
提示:
CONFLICT(content):Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result
这是要我们手动解决后再提交. git status 也可以告诉我们冲突的文件
h. git 用<<<<<< ======= >>>>>>标记出不同分支的内容。我们修改后保存再提交
i. git log 可以看到分支的合并情况
j. 最后删除newbranch分支 git branch -d newbranch, 工作完成!
26. 当git不能自动合并分支时, 就必须先解决冲突。然后再提交,合并完成.
用git log —graph 可以看到分支合并图
多人协同工作,自己创建一个自己的分支, 别人看不到, 你在自己的分支上干活, 想提交就提交知道开发完毕,在一次性合并到master分支上, 这样既安全又不影响其他人工作
23. 创建与合并分支
原理:每次提交,git都把它们串成一条时间线,这条时间线就是一个分支。 截止到目前只有一条时间线,这个分支叫做主分分支master。 HEAD严格来说不是指向提交,而是指向master,master才是指向提交的。 所以HEAD指向的就是当前分支
a. 一开始master分支是一条线, git用master指向最新的提交,再用HEAD指向master,就能确定当前分支, 以及当前分支的提交点, 每次提交master分支都向前移动一步,这样,随着不断提交,master分支也越来越长
b. 当我们创建新分支(xiaoke),git新建了一个指针叫xiaoke, 指向master相同的提交, 再把HEAD指向xiaoke,就表示当前分支在xiaoke上。 所以说git创建一个分支很快,因为除了增加一个xiaoke指针,改改HEAD的指向,工作区文件没有任何变化。
c. 不过从现在开始,对工作区的修改和提交就是针对xiaoke分支了,比如新提交一次xioake指针向前移动一步,而master指针不变。 加入我们在xiaoke上的工作完成了,就可以把xiaoke合并到master上。最简单的方法就是把master指向xiaoke的当前提交,就完成了合并。
所以git合并分支也很快,就改了下指针,工作区内容不变
d. 合并完分支后,甚至可以删除xiaoke分支。删除xiaoke分支就是把xiaoke指针给删掉,删掉后,我们就剩下一条master分支
实现:
a.
1)创建xiaoke分支,然后切换到xiaoke分支
git checkout -b xiaoke
-b 参数表示创建并切换,相当于以下两条命令
git branch xiaoke
git checkout xiaoke
2)git branch查看当前分支, 这条命令会列出所有分支,当前分支前会标一个*号
3)xiaoke分支可以add,commit等。当xiaoke分支工作完成,切换回主分支git checkout master.
4)这时候查看发现在xiaoke分支上的工作并没有显现在master上。 这就需要把xiaoke分支的工作成果合并到master上: git merge xiaoke
git merge 用于合并指定分支到当前分支。这种合并是Fast-forward合并方式(把master指向xiaoke的当前提交,很快)
5. 合并完成就可以删除xiaoke分支了 git branch -d xiaoke
24. git鼓励大量使用分支
查看分支 git branch
创建分支 git branch <name>
切换分支 git checkout <name>
创建并切换 git checkout -b <name>
合并某分支到当前分支 git merge <name>
删除分支 git branch -d <name>
25. 解决冲突
a. check out -b newbranch //创建新分支newbranch
b. 在readme.txt 文件末尾加句话 “i hate you”//修改readme.txt 文件
c. git add readme.txt
d. git commit -m “add one word”
e. checkout master //切换回master分支
f. 重复b,c,d 步骤.
g. 这种情况下git无法快速合并,只能试图把各自的修改合并起来,但这种合并就有可能有冲突. 尝试一下: git merge newbranch
提示:
CONFLICT(content):Merge conflict in readme.txt
Automatic merge failed; fix conflicts and then commit the result
这是要我们手动解决后再提交. git status 也可以告诉我们冲突的文件
h. git 用<<<<<< ======= >>>>>>标记出不同分支的内容。我们修改后保存再提交
i. git log 可以看到分支的合并情况
j. 最后删除newbranch分支 git branch -d newbranch, 工作完成!
26. 当git不能自动合并分支时, 就必须先解决冲突。然后再提交,合并完成.
用git log —graph 可以看到分支合并图
相关文章推荐
- Android性能优化之如何避免Overdraw
- Java算法---密码验证合格程序
- android 特殊网络类型说明
- robotframework接口测试初探2
- Angular - - angular.forEach、angular.extend
- apache自带压力测试工具ab详解
- 操作系统实验,IPC(2): reader and writer, 读者和写者问题
- js实现文字闪烁特效的方法
- nginx rewrite if指令剖析
- angularjs+requirejs按需加载
- 【经典算法】:欧几里得算法求最大公约数
- DLL在Qt中的创建与使用
- 深拷贝与浅拷贝的解析 (学习日记)
- QT之QCustomPlot(一)
- iOS基础-系统自带按钮样式- UIBarButtonSystemItem
- ANT-build.xml编译文件详解
- Oracle NID工具修改数据库DBID、数据库名称、数据库实例名
- TP 上传
- 谷歌发布2015年度搜索排行榜
- 谷歌发布2015年度搜索排行榜