热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

git学习笔记三

第七:包含多个分支和合并实现的实例1、出现合并冲突的实例[root@localhost~]#mkdir-pgitbranche[root@localhostbranche]#cp-rv..wanyan*.偷懒一下`..wanyanREADME-`.README`..wanyanlib-`.lib`..wanyanlibcomment

 

第七:包含多个分支和合并实现的实例

1、出现合并冲突的实例

[root@localhost ~]# mkdir -p /git/branche

[root@localhost branche]# cp -rv ../wanyan/* .   //偷懒一下

`../wanyan/README' -> `./README'

`../wanyan/lib' -> `./lib'

`../wanyan/lib/comment' -> `./lib/comment'

`../wanyan/lib/include' -> `./lib/include'

`../wanyan/lib/include/comment' -> `./lib/include/comment'

`../wanyan/lib/include/main.c' -> `./lib/include/main.c'

`../wanyan/lib/README' -> `./lib/README'

[root@localhost branche]# git init

Initialized empty Git repository in /git/branche/.git/

[root@localhost branche]# git add .

[root@localhost branche]# git commit -m "1st commit"

[master (root-commit) e9f37b6] 1st commit

 5 files changed, 9 insertions(+), 0 deletions(-)

 create mode 100644 README

 create mode 100644 lib/README

 create mode 100644 lib/comment

 create mode 100644 lib/include/comment

 create mode 100644 lib/include/main.c

[root@localhost branche]# cat .git/HEAD

ref: refs/heads/master

[root@localhost branche]# cat .git/refs/heads/master

e9f37b62445a7c855108cb00455c9922ea356c29

[root@localhost branche]# git cat-file -t e9f3

Commit

第一次改变:

[root@localhost branche]# vi lib/comment

 

include

change

the last change

[root@localhost branche]# git commit -a -m "2rd commit"

[master c2a876e] 2rd commit

 1 files changed, 1 insertions(+), 0 deletions(-)

第二次改变:

[root@localhost branche]# vi README

 

just test!

another hang!

last hang

[root@localhost branche]# git commit -a -m "3rd commit"

[master f5febf9] 3rd commit

 1 files changed, 1 insertions(+), 0 deletions(-)

创建分支

[root@localhost branche]# git branch laji

[root@localhost branche]# ll .git/refs/heads/

total 16

-rw-r--r-- 1 root root 41 Nov 27 05:19 laji

-rw-r--r-- 1 root root 41 Nov 27 05:18 master

[root@localhost branche]# cat .git/refs/heads/laji  //以下可以看出指向同一个commit

f5febf9e98c5dc2a1279a56c47642677fdea79ec

[root@localhost branche]# cat .git/refs/heads/master

f5febf9e98c5dc2a1279a56c47642677fdea79ec

[root@localhost branche]# git branch  //查看当前使用的分支

  laji

* master

[root@localhost branche]# git checkout laji  //分支的切换

Switched to branch 'laji'

[root@localhost branche]# git branch

* laji

  master

[root@localhost branche]# cat .git/HEAD      

ref: refs/heads/laji

接下来演示的是分支之间的关系(互不影响),在分支laji下的修改对master分支没任何影响。

首先是在laji分支的下的修改

[root@localhost branche]# vi README   

just test!

another hang!

last hang

change for branch

[root@localhost branche]# git  commit -a -m "laji 4th commit"

[laji b72a123] laji 4th commit

 1 files changed, 1 insertions(+), 0 deletions(-)

[root@localhost branche]# cat README

just test!

another hang!

last hang

change for branch

[root@localhost branche]# cat .git/refs/heads/laji  //commit不相同了,可见出现了分支

b72a1238f9962dd103c5839077026e7c342595ce

[root@localhost branche]# cat .git/refs/heads/master

f5febf9e98c5dc2a1279a56c47642677fdea79ec

然后切换到master分支观察下

[root@localhost branche]# git checkout master

Switched to branch 'master'

[root@localhost branche]# git branch

  laji

* master

[root@localhost branche]# cat README

just test!

another hang!

last hang

接着创造分叉(就是对mater下做出进一步的git

[root@localhost branche]# git branch

  laji

* master

[root@localhost branche]# vi README

 

just test!

another hang!

last hang

The master change

[root@localhost branche]# git commit -a -m "master 4th commit"

[master bf7bf97] master 4th commit

 1 files changed, 1 insertions(+), 0 deletions(-)

[root@localhost branche]# cat README   //列出和laji分支做对比

just test!

another hang!

last hang

The master change

[root@localhost branche]# git checkout laji

Switched to branch 'laji'

[root@localhost branche]# cat README

just test!

another hang!

last hang

change for branch

最后就是分支的合并(把laji 合并到master),这个合并可以是不同的文件之间的合并(因为合作开发项目时,所做的工作基本是很难相同的)

[root@localhost branche]# git branch

  laji

* master

[root@localhost branche]# git merge laji

Auto-merging README

CONFLICT (content): Merge conflict in README

Automatic merge failed; fix conflicts and then commit the result.

[root@localhost branche]# cat README  //因为是同一个文件的合并出现了冲突

just test!

another hang!

last hang

<<<<<<

The master change

=======

change for branch

>>>>>>> laji

[root@localhost branche]# git branch

  laji

*master

[root@localhost branche]# vi README

 

just test!

another hang!

last hang

The master change

change for branch

~                   

[root@localhost branche]# git add .

[root@localhost branche]# git commit "last commit"

这样就可以了,解决了冲突,提交成功。

[root@localhost branche]# git branch -D laji  //删除没用的分支

Deleted branch laji (was b72a123).

2、不出现冲突的实例

[root@localhost other]# cd ..

[root@localhost git]# mkdir another

[root@localhost git]# cd another/

[root@localhost another]# vi a1

 

wanyan

~      

[root@localhost another]# vi a2

 

ethnicity

[root@localhost another]# git init

Initialized empty Git repository in /git/another/.git/

[root@localhost another]# git add .

[root@localhost another]# git commit -m "1st commit"

[master (root-commit) f723f47] 1st commit

 2 files changed, 2 insertions(+), 0 deletions(-)

 create mode 100644 a1

 create mode 100644 a2

[root@localhost another]# git branch laji 

[root@localhost another]# git branch

  laji

* master

[root@localhost another]# git checkout laji

Switched to branch &#39;laji&#39;

[root@localhost another]# vi a1

 

wanyan

zhengjing

[root@localhost another]# git commit -a -m "laji 2nd commit"

[laji 05cda63] laji 2nd commit

 1 files changed, 1 insertions(+), 0 deletions(-)

[root@localhost another]# git checkout master

[root@localhost another]# vi a2

 

ethnicity

beta

[root@localhost another]# git commit -a -m "mater 3rd commit"

[master 1239b8e] mater 3rd commit

 1 files changed, 1 insertions(+), 0 deletions(-)

[root@localhost another]# cat a1

wanyan

[root@localhost another]# cat a2

ethnicity

beta

[root@localhost another]# git checkout laji

Switched to branch &#39;laji&#39;

[root@localhost another]# cat a1

wanyan

zhengjing

[root@localhost another]# cat a2

ethnicity

[root@localhost another]# git checkout master

Switched to branch &#39;master&#39;

[root@localhost another]# git merge laji

Merge made by the &#39;recursive&#39; strategy.

 a1 |    1 +

 1 files changed, 1 insertions(+), 0 deletions(-)

[root@localhost another]# cat a1

wanyan

zhengjing

[root@localhost another]# cat a2

ethnicity

beta

[root@localhost another]# git branch -D laji   //删除分支

Deleted branch laji (was 05cda63).

[root@localhost another]# git branch

* master

 

第八:仅有一个分支的合并实例

[root@localhost git]# mkdir other

[root@localhost git]# cd other/

[root@localhost other]# vim main

hello ethnicitybeta

[root@localhost other]# git init

Initialized empty Git repository in /git/other/.git/

[root@localhost other]# git add .

[root@localhost other]# git commit -m &#39;1st commit&#39;

[master (root-commit) 9ef10c3] 1st commit

 1 files changed, 1 insertions(+), 0 deletions(-)

 create mode 100644 main

[root@localhost other]# git branch wanyan

[root@localhost other]# git checkout wanyan

Switched to branch &#39;wanyan&#39;

[root@localhost other]# git branch

  master

*wanyan

[root@localhost other]# vi main

 

hello ethnicitybeta

wanyanzhenjiang

~

[root@localhost other]# git commit -a -m "wanyan 2nd commit"

[wanyan 96aa677] wanyan 2nd commit

 1 files changed, 1 insertions(+), 0 deletions(-)

[root@localhost other]# cat main

hello ethnicitybeta

wanyanzhenjiang

[root@localhost other]# git checkout master

Switched to branch &#39;master&#39;

[root@localhost other]# git branch

* master

  wanyan

[root@localhost other]# cat main

hello ethnicitybeta

[root@localhost other]# git checkout master

Switched to branch &#39;master&#39;

[root@localhost other]# git merge wanyan

Updating 9ef10c3..96aa677

Fast-forward    //表示被合并的分支并没有出现分叉

 main |    1 +

 1 files changed, 1 insertions(+), 0 deletions(-)

[root@localhost other]# cat main

hello ethnicitybeta

wanyanzhenjiang    

 

 

实验结束

 

总结:之前有接触版本控制的概念,仅有的名词概念是svn,还没来得及做研究,这里接触了git感觉十分的好用,在这里做一个系统的学习记录下来,以备工作时使用,再次感谢小布老师的无私授课。         

 


推荐阅读
author-avatar
mobiledu2502894073
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有