Git - Git教程 1.3:解决冲突

解决冲突

1 - 准备新分支 feature1

1 $ git branch feature1
2 $ git checkout feature1
3 Switched to branch 'feature1'

2 - 为 FILE_T.txt 添加内容 Creating a new branch is quick AND simple. 添加且完成提交

1 $ git add FILE_T.txt
2 $ git commit -m "simple"
3 [feature1 3687f9a] simple
4  1 file changed, 1 insertion(+), 1 deletion(-)

3 - 切换回 master 分支

1 $ git checkout master
2 Switched to branch 'master'

4 - 在 master 分支上把 FILE_T.txt 文件的最后一行改成 Creating a new branch is quick & simple. 添加且提交

1 $ git add FILE_T.txt
2 $ git commit -m "& simple"
3 [master 16365cf] & simple
4  1 file changed, 1 insertion(+), 1 deletion(-)

现在的 master 分支和 fraturel 分支各自都分别有新的提交

6 - 这种情况下 Git 是无法执行快速合并,只能试图把各自的修改合并起来,但这种合并极有可能会有冲突

1 $ git merge feature1
2 Auto-merging FILE_T.txt
3 CONFLICT (content): Merge conflict in FILE_T.txt
4 Automatic merge failed; fix conflicts and then commit the result.

果然!Git 告诉我们 FILE_T.txt 文件存在冲突,必须手动解决冲突后再提交。使用 git status 可以告诉我们冲突的文件

复制代码
 1 $ git status
 2 On branch master
 3 You have unmerged paths.
 4   (fix conflicts and run "git commit")
 5   (use "git merge --abort" to abort the merge)
 6 
 7 Unmerged paths:
 8   (use "git add <file>..." to mark resolution)
 9 
10     both modified:   FILE_T.txt
11 
12 no changes added to commit (use "git add" and/or "git commit -a")
复制代码

我们可以直接查看 FILE_T.txt 的内容

1 $ cat FILE_T.txt
2 CREATE  BRANCH TEST!
3 <<<<<<< HEAD
4 Creating a new branch is quick & simple.
5 =======
6 Creating a new branch is quick AND simple.
7 >>>>>>> feature1

Git 用 <<<<<<< / ======= / >>>>>>> 标记出不同分支的内容;现在我们把冲突的内容修改成 Creating a new branch is simple 并进行查看

$ cat FILE_T.txt
Create a new branch
Creating a new branch is simple

7 - 提交

1 $ git add FILE_T.txt
2 $ git commit -m "conflict fixed"
3 [master 684e02c] conflict fixed

8 - 现在 master 分支和 featurel1 分支变成了下图所示

9 - 使用带参数的 git log 可以看到分支的合并情况

1 $ git log --graph --pretty=oneline --abbrev-commit
2 *   4776222 (HEAD -> master) conflict fixed
3 |\  
4 | * 0285122 (feature1) simple
5 * | 3d9d333 & simple
6 |/  
7 * adf1cd6 new branch
8 * e5012ec start branch

10 - 最后删除 featurel1 分支即可

复制代码
 1 $ git branch -d feature1
 2 Deleted branch feature1 (was 0285122).
 3 $ git log --graph --pretty=oneline --abbrev-commit
 4 *   4776222 (HEAD -> master) conflict fixed
 5 |\  
 6 | * 0285122 simple
 7 * | 3d9d333 & simple
 8 |/  
 9 * adf1cd6 new branch
10 * e5012ec start branch
复制代码

小结

1 - 当 Git 无法自动合并分支时,就必须首先解决冲突,解决冲突后,再提交,合并完成

2 - 解决冲突就是把 Git 合并失败的文件手动编辑为我们希望的内容,再提交

注:用 git log --graph 命令可以看到分支合并图

 

posted on   低头捡石頭  阅读(5)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示