关山难越,谁悲失路之人;萍水相逢,尽是他乡之客。
百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程教程 > 技术文章 > 正文

Git学习笔记 003 Git进阶功能 part5 合并(第一部分)

guanshanw 2023-10-07 12:13 53 浏览 0 评论

合并(merge)是很常用的操作。尤其是一个庞大的很多人参与开发的企业级应用。一般会设定一个主分支,和多个副分支。

在副分支开发完成后,合并到主分支中。始终保持主分支是一个完整的,稳定的最新状态的分支。

Git学习笔记 003 Git进阶功能 part5 合并(第一部分)

那么合并必然带来一些问题,比如最常见的冲突问题。

合并冲突

首先初始化一个仓库用于测试合并的冲突问题。建立一个文件,内容如下:

文件内容:

this is the 1 line.
this is the 2 line.
this is the 3 line.
this is the 4 line.
this is the 5 line.

将文件加入缓存,然后提交。

这时在当前分支基础上,切换到新的分支whitespace,修改第三行。文件内容如下

this is the 1 line.
this is the 2 line.
this is the 3 line. Changed.
this is the 4 line.
this is the 5 line.

将这个文件也提交。然后确认一下两个分支的状态。

$ git log

commit f707a64fe9e2b39bd60be414eb11c61f8e811bc1 (HEAD -> master)

Author: kutilion <kutilion@gmail.com>

Date: Fri Apr 12 17:51:51 2019 +0800

1st commit

$ git log

commit 699ea51361645afa83d871be47518cc14b52ea4c (HEAD -> whitespace)

Author: kutilion <kutilion@gmail.com>

Date: Fri Apr 12 17:56:26 2019 +0800

1st commit on whitespace branch

commit 96b5bc8cb0a8e71099a4e2908e8dc1256e0c0dd6

Author: kutilion <kutilion@gmail.com>

Date: Fri Apr 12 17:51:51 2019 +0800

1st commit

现在返回master分支,修改master分支下的文件,内容如下。

this is the 1 line.
this is the 2 line.
this is the 3 line. Conflicted.
this is the 4 line.
this is the 5 line.

这时, 两个分支的第三行已经产生了冲突。执行合并操作会出现错误:

$ git merge whitespace

Auto-merging MergeTest.txt

CONFLICT (content): Merge conflict in MergeTest.txt

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

冲突的文件内容:

this is the 1 line.

this is the 2 line.

<<<<<<< HEAD

this is the 3 line. Conflicted.

=======

this is the 3 line. Changed.

>>>>>>> whitespace

this is the 4 line.

this is the 5 line.

确认一下分支状态,也可以看到冲突提示。

$ git status -sb

## master

UU MergeTest.txt

取消这次失败的merge可以使用如下命令

$ git merge --abort

再次确认分支状态,发现冲突提示没有了。回复到了合并前的状态。但是要注意,如果当前分支由未被追踪的文件,可能会被删除。

$ git status -sb

## master

当然,也可以使用reset –hard HEAD命令来强行返回合并前的状态。

手动合并文件

出现冲突后,可以手动解决。这时需要确认三个版本的文件,执行合并命令的分支的文件,被合并分支的文件,以及它们共通的先祖文件

可以使用show命令把这三个文件拷贝出来

$ git show :1:MergeTest.txt > MergeTest.ancestor.txt

$ git show :2:MergeTest.txt > MergeTest.master.txt

$ git show :3:MergeTest.txt > MergeTest.whitespace.txt

官网推荐使用merge-file命令和上述三个文件来合并。但是笔者不推荐,笔者推荐直接手动修改冲突文件,然后再次提交。

$ git add MergeTest.txt

$ git commit -m "Merge conflict solved"

[master d102b7c] Merge conflict solved

确认解决后的合并状态

$ git log --oneline

47e0c00 (HEAD -> master) Merge conflict solved

1bc9fcc 2st commit on master branch

77fbf54 (whitespace) 1st commit on whitespace branch

efbb750 1st commit on master branch

相关推荐

七条简单命令让您玩转Git
七条简单命令让您玩转Git

凭借着出色的协作能力、快速部署效果与代码构建辅助作用,Git已经得到越来越多企业用户的青睐。除了用于开发商业及消费级应用之外,众多科学及政府机构也开始尝试使用这...

2023-10-07 12:14 guanshanw

基本完整的关于Git分支branch的操作
基本完整的关于Git分支branch的操作

Git使用背景项目中要用到dev或者其他分支开发完代码,需要将该分支合并到master的需求操作步骤下面以dev名称为lex为分支名为例来操作一遍客户端操作:...

2023-10-07 12:14 guanshanw

Git 进阶(合并与变基)
Git 进阶(合并与变基)

在Git中整合来自不同分支的修改主要有两种方法:合并(merge)以及变基(rebase)合并(merge)merge流程图merge的原理是找到这两个分...

2023-10-07 12:13 guanshanw

Git学习笔记 003 Git进阶功能 part5 合并(第一部分)
Git学习笔记 003 Git进阶功能 part5 合并(第一部分)

合并(merge)是很常用的操作。尤其是一个庞大的很多人参与开发的企业级应用。一般会设定一个主分支,和多个副分支。在副分支开发完成后,合并到主分支中。始终保持主...

2023-10-07 12:13 guanshanw

非标题党,三张图帮你理解git merge和git rebase的区别
非标题党,三张图帮你理解git merge和git rebase的区别

初始场景:基于正常的开发分支修改几个小bug,然后在合并到开发分支上。gitmergegitcheckoutfeaturegitmergeho...

2023-10-07 12:13 guanshanw

git 初次使用(01)
git 初次使用(01)

先从github上克隆代码下来:使用vscode克隆代码如下图,填写上github仓库地址:vscode有时候克隆代码速度比较慢,可以用命令行方式克隆gitc...

2023-10-07 12:12 guanshanw

Git 远程操作

4.Git远程操作命令说明gitremote远程版本库操作gitfetch从远程获取版本库gitpull下载远程代码并合并gitpush上传远程代码并合并4.1远程版本库操作gitre...

Git常用命令-总结
Git常用命令-总结

创建git用户$gitconfig--globaluser.name"YourName"$gitconfig--globaluser.em...

2023-10-07 12:12 guanshanw

git中删除从别人clone下来项目的git信息,并修改为自己的分支

如果你从别人的Git存储库中克隆了一个项目,并想要删除与该存储库相关的Git信息,并将其修改为你自己的分支,则可以执行以下步骤:使用gitclone命令克隆存储库:gitclone<u...

git系列-回滚和放弃本地修改

回滚历史提交就是reset的功能。这种情况是已经提交远程仓库,需要回滚到之前的提交。gitreset--hardcommitId//注:强制提交后,当前版本后面的提交版本将会删掉!gi...

GIT使用小技巧大全
GIT使用小技巧大全

在大型软件工程的开发过程中,版本控制是无法绕过去的;目前来说,最火的版本控制软件就是GIT了。早两年SVN比较火,不过被大神linus喷了几次后,就日落西山了,...

2023-10-07 12:11 guanshanw

git相关命令-上
git相关命令-上

这些命令都是看了文档后,个人觉得比较有用的一些,展示给大家。回到远程仓库的状态抛弃本地所有的修改,回到远程仓库的状态。gitfetch--all&...

2023-10-07 12:10 guanshanw

Git命令行接口:掌握Git的必备技能
Git命令行接口:掌握Git的必备技能

Git是一款强大的分布式版本控制工具,它支持命令行界面操作。熟练掌握Git命令行接口,是开发者使用Git的必备技能之一。在这篇文章中,我们将介绍Git命令行接口...

2023-10-07 12:10 guanshanw

Git命令详解
Git命令详解

相信各位小伙伴们应该都对git有一些了解,毕竟作为代码管理的神器,就算不是IT行业的小伙伴肯定也或多或少的听说过一些。今天就来和小伙伴们分享一下自己总结的常用命...

2023-10-07 12:10 guanshanw

工作7年收集到的git命令
工作7年收集到的git命令

概念git中的术语解释:仓库也叫版本库(repository)stage:暂存区,add后会存到暂存区,commit后提交到版本库git安装linux...

2023-10-07 12:10 guanshanw

取消回复欢迎 发表评论: