博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
git merge解决冲突_如何解决git merge冲突
阅读量:2523 次
发布时间:2019-05-11

本文共 5259 字,大约阅读时间需要 17 分钟。

git merge解决冲突

是开放源代码项目和许多封闭源代码项目的标准源代码存储库管理器。 本文向新的Git用户展示了如何做一些稍微先进但对它的目的至关重要的事情:解决git-merge冲突。

什么是git merge?

在本地 ,然后将其代码推送到中心位置。 然后,其他人可以将代码拉回到本地副本,并在合作者的更改到位的情况下继续自己的工作。

当您要将分支中的更改带入当前分支时,请使用命令。 合并将其他分支中的所有更改应用于当前分支。

什么是合并冲突?

在可以并行化工作的每种情况下,工作最终都会重叠。 有时,两个开发人员会以两种不同的方式更改同一行代码。 在这种情况下,Git无法确定哪个版本正确-只有开发人员才能决定。

如果发生这种情况,开发人员将在git合并期间看到以下错误:

Auto-merging      
[ filename1
]
CONFLICT
( content
) : Merge conflict
in
[ filename1
]
Automatic merge failed; fix conflicts and
then commit the result.

解决合并冲突可能需要一分钟,也可能需要几天(如果需要修复很多文件)。 建议并遵循良好的编码习惯,每天通过多次 , , 和来多次同步代码。

您如何解决git合并冲突?

Git在其错误消息中提供了解决冲突的线索。 它说[filename1]中的合并冲突 ,因此您知道该文件存在问题。 然后说修复冲突,然后提交结果 ,因此,如果您按照指示进行操作,请编辑文件,然后提交,一切都应该正常进行。 让我们看看实际情况。

创建一个新的Git存储库,添加文件,创建分支,进行一些冲突的编辑,然后查看其外观。

从一个空目录开始并运行 :

$      
ls
-l
$
git init
Initialized empty Git repository
in
/ home
/ bob
/ example
/ .git
/
$

现在创建一个README文件并提交更改:

$      
echo
"This is a new README file"
> README.md
$
cat README.md
This is a new README
file
$
git add README.md
$
git commit
-m
"README file added"
1
file changed,
1 insertion
( +
)
create mode
100644 README.md
$
git status
On branch master
nothing to commit, working
tree clean
$

创建一个新分支:

$      
git checkout
-b
"branch_to_create_merge_conflict"
Switched to a new branch
'branch_to_create_merge_conflict'

在新分支上:

$      
git branch
* branch_to_create_merge_conflict
master

进行编辑:

This is a new README      
file
This is an edit on the branch

现在提交该编辑:

$      
vim README.md
$
git add README.md
$
git commit
-m
"Edits made to README on the branch"
[ branch_to_create_merge_conflict 9c5e88a
] Edits made to README on the branch
1
file changed,
2 insertions
( +
)

返回master分支,用不同的内容编辑第3行的README,然后提交。

转到master分支:

$      
git checkout master
Switched to branch
'master'

编辑自述文件:

This is a new README      
file
This is an edit on the master branch

提交编辑:

$      
git add README.md
$
git commit
-m
"Edits made to README on the master branch"
[ master 7ea2985
] Edits made to README on the master branch
1
file changed,
2 insertions
( +
)

将分支合并到master中以查看错误:

$      
git branch
  branch_to_create_merge_conflict
* master
$
git merge branch_to_create_merge_conflict
Auto-merging README.md
CONFLICT
( content
) : Merge conflict
in README.md
Automatic merge failed; fix conflicts and
then commit the result.

现在,按照Git的要求进入README文件,以查看其外观:

This is a new README      
file
<<<<<<< HEAD
This is an edit on the master branch
=======
This is an edit on the branch
>>>>>>> branch_to_create_merge_conflict

如您所见,Git添加了一些语法,包括七个“小于”字符<<<<<<<和七个“大于”字符>>>>>>> ,以七个等号分隔, ==== === 。 可以使用您的编辑器进行搜索,以快速找到需要进行编辑的位置。

在该块中有两个部分:

  • “小于”字符表示当前分支的编辑(在本例中为“ HEAD”,这是您当前分支的另一个词),等号表示第一部分的结尾。
  • 第二部分是编辑来自尝试合并的位置; 它以等号开头,以“大于”号结尾。

作为开发人员,您可以决定保留哪些内容和保留哪些内容。 根据需要进行编辑,然后关闭文件:

This is a new README      
file
This is an edit on the branch

如您所见,这将保留分支的编辑。 您可以运行来查看更多说明:

$      
vim README.md
$
git status
On branch master
You have unmerged paths.
 
( fix conflicts and run
"git commit"
)
 
( use
"git merge --abort" to abort the merge
)
Unmerged paths:
 
( use
"git add ..." to mark resolution
)
  both modified: README.md
no changes added to commit
( use
"git add" and
/ or
"git commit -a"
)

请注意,如果遇到严重问题,可以通过运行git merge --abort中止合并来中止合并。

按照说明添加文件,然后提交:

$      
git add README.md
$
git status
On branch master
All conflicts fixed but you are still merging.
( use
"git commit" to conclude merge
)
Changes to be committed:
modified: README.md
$
git commit
[ master 9937ca4
] Merge branch
'branch_to_create_merge_conflict'

关键要点和进一步阅读

如果有足够的时间,任何规模的团队都将发生合并冲突。 能够头脑清醒地解决这些问题很重要。 作为一名开发人员,我不知所措地盯着10多个文件合并冲突问题。 理解合并冲突时您要查看的内容有很长的路要走。

在中,我没有涉及合并冲突。 知道如何使用Git命令行工具(包括解决合并冲突)对于理解Git并能够在任何环境中使用Git都是必不可少的。

如果遇到困难,Git的是不错的资源。 您可以在Git Pro书籍的部分中找到有关Git合并的高级信息,包括合并冲突解决方案。

翻译自:

git merge解决冲突

转载地址:http://ldbzd.baihongyu.com/

你可能感兴趣的文章
[C/C++] C++中new的语法规则
查看>>
Texture2D 二维纹理
查看>>
RedHat6.4 安装yum源
查看>>
js funciton总结
查看>>
汇编中标号与变量名的区别
查看>>
JavaWeb学习之HttpServletRequest
查看>>
C语言模拟进程
查看>>
HDFS常用命令
查看>>
远程接发命令,黏包
查看>>
20150403--RBAC+首页登录-01
查看>>
使用浏览器访问或调试微信公众号(跳过微信认证)
查看>>
Ansible运维自动化工具19个常用模块使用实例【转】
查看>>
关于素数表-C++
查看>>
Number Complement
查看>>
net与树莓派的情缘(一)
查看>>
$store.getters调用不执行
查看>>
android 按键精灵。C++编写。
查看>>
redis 在windows上运行
查看>>
Symmetric Tree
查看>>
node.js介绍
查看>>