良许Linux教程网 Git教程 Linux命令-git教程(三)

Linux命令-git教程(三)

上一篇文章和大家分享了git对象的理解,git多层目录,这篇文件继续和大家讲解一下git的使用。

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

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

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 ‘laji’

[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 ‘laji’

[root@localhost another]# cat a1

wanyan

zhengjing

[root@localhost another]# cat a2

ethnicity

[root@localhost another]# git checkout master

Switched to branch ‘master’

[root@localhost another]# git merge laji

Merge made by the ‘recursive’ 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 ‘1st commit’

[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 ‘wanyan’

[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 ‘master’

[root@localhost other]# git branch

* master

wanyan

[root@localhost other]# cat main

hello ethnicitybeta

[root@localhost other]# git checkout master

Switched to branch ‘master’

[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

以上就是良许教程网为各位朋友分享的Linux系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你!

良许微信公众号

本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

电子邮件地址不会被公开。 必填项已用*标注

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部