您的位置:首页 > 其它

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 可以看到分支合并图
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: