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 可以看到分支合并图