热门标签 | 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感觉十分的好用,在这里做一个系统的学习记录下来,以备工作时使用,再次感谢小布老师的无私授课。         

 


推荐阅读
  • MyBatisCodeHelperPro 2.9.3 最新在线免费激活方法
    MyBatisCodeHelperPro 2.9.3 是一款强大的代码生成工具,适用于多种开发环境。本文将介绍如何在线免费激活该工具,帮助开发者提高工作效率。 ... [详细]
  • 使用 SourceTree 管理 SVN 代码仓库的详细指南
    SourceTree 是一款功能强大的 Git 管理工具,但很多人不知道它同样支持管理 SVN 代码仓库。本文将详细介绍如何使用 SourceTree 来管理和操作 SVN 代码仓库。 ... [详细]
  • Vim 编辑器功能强大,但其默认的配色方案往往不尽如人意,尤其是注释颜色为蓝色时,对眼睛极为不友好。为了提升编程体验,自定义配色方案显得尤为重要。通过合理调整颜色,不仅可以减轻视觉疲劳,还能显著提高编码效率和兴趣。 ... [详细]
  • 在开发过程中,为了确保代码的实时保存,我们常常会对某个功能进行多次提交。然而,当功能趋于稳定时,将这些分散的提交记录合并为一次提交,可以提高代码仓库的整洁度和可维护性。本文将详细介绍如何使用 Git 巧妙地合并多次提交记录,帮助开发者简化历史记录管理。 ... [详细]
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • 本文深入探讨了 Git 与 SVN 的高效使用技巧,旨在帮助开发者轻松应对版本控制中的各种挑战。通过详细解析两种工具的核心功能与最佳实践,读者将能够更好地掌握版本管理的精髓,提高开发效率。 ... [详细]
  • 文章目录python包-requests关于requests包安装和使用pythonrequests请求超时设置工作中遇到的常见问题整理访问https网站,报错cer ... [详细]
  • Subversion 可执行文件路径配置错误的问题
    在公司项目的前后端分离环境中,Subversion 可执行文件的路径配置可能出错,主要原因是 SVN 安装时未包含命令行工具。 ... [详细]
  • 在与团队成员合作进行大学项目时,遇到了一个常见问题:.project 文件被从 SVN 存储库中删除,导致 Eclipse 项目配置损坏。本文将探讨这一问题的原因及解决方案。 ... [详细]
  • 在Eclipse中提升开发效率,推荐使用Google V8插件以增强Node.js的调试体验。安装方法有两种:一是通过Eclipse Marketplace搜索并安装;二是通过“Help”菜单中的“Install New Software”,在名称栏输入“googleV8”。此插件能够显著改善调试过程中的性能和响应速度,提高开发者的生产力。 ... [详细]
  • 为了在Hadoop 2.7.2中实现对Snappy压缩和解压功能的原生支持,本文详细介绍了如何重新编译Hadoop源代码,并优化其Native编译过程。通过这一优化,可以显著提升数据处理的效率和性能。此外,还探讨了编译过程中可能遇到的问题及其解决方案,为用户提供了一套完整的操作指南。 ... [详细]
  • 在 CentOS 6.5 系统上部署 VNC 服务器的详细步骤与配置指南
    在 CentOS 6.5 系统上部署 VNC 服务器时,首先需要确认 VNC 服务是否已安装。通常情况下,VNC 服务默认未安装。可以通过运行特定的查询命令来检查其安装状态。如果查询结果为空,则表明 VNC 服务尚未安装,需进行手动安装。此外,建议在安装前确保系统的软件包管理器已更新至最新版本,以避免兼容性问题。 ... [详细]
  • 在JavaWeb项目架构中,NFS(网络文件系统)的实现与优化是关键环节。NFS允许不同主机系统通过局域网共享文件和目录,提高资源利用率和数据访问效率。本文详细探讨了NFS在JavaWeb项目中的应用,包括配置、性能优化及常见问题的解决方案,旨在为开发者提供实用的技术参考。 ... [详细]
  • 七款高效编辑器与笔记工具推荐:KindEditor自动换行功能解析
    本文推荐了七款高效的编辑器与笔记工具,并详细解析了KindEditor的自动换行功能。其中,轻笔记QingBiJi是一款完全免费的记事本软件,用户可以通过其简洁的界面和强大的功能轻松记录和管理日常事务。此外,该软件还支持多平台同步,确保用户在不同设备间无缝切换。 ... [详细]
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社区 版权所有