git merge 保留提交记录

Git是一种版本控制系统,它允许多人在同一个代码库上同时工作,并跟踪代码的变化。在实际开发中,经常会遇到需要合并不同分支上的代码的情况。Git提供了多种合并方式,其中git merge是最常用的一种。git merge命令可以将两个或多个分支的代码合并到当前分支上,形成一个新的提交记录。
在合并分支时,有时候我们希望保留每个分支上的提交记录,以便日后查看历史更改。本文将详细介绍如何使用git merge命令来合并不同分支的代码,并保留各自的提交记录。
1. 创建示例代码库
首先,我们需要创建一个示例的Git代码库,以便演示git merge命令的使用。我们先创建一个名为merge-demo的空文件夹,然后在该文件夹下初始化一个Git仓库:
$ mkdir merge-demo
$ cd merge-demo
$ git init
接着,我们创建两个新的分支feature1和feature2,并在每个分支上提交一些修改:
$ git checkout -b feature1
$ echo "Feature 1 changes" > file1.txt
$ git add file1.txt
$ git commit -m "Add feature 1 changes"
$ git checkout -b feature2
$ echo "Feature 2 changes" > file2.txt
$ git add file2.txt
$ git commit -m "Add feature 2 changes"
现在我们有两个分支feature1和feature2,它们分别有各自的提交记录。
2. 合并分支并保留提交记录
接下来,我们将feature1分支合并到master分支,并保留feature1分支上的提交记录。我们可以使用git merge命令来完成这个操作:
$ git checkout master
$ git merge --no-ff feature1
在上面的命令中,--no-ff选项表示禁用快进合并,在合并分支时创建一个新的提交记录。这样可以保留feature1分支上的提交记录。合并完成后,我们可以使用git log命令查看提交记录:
$ git log --oneline
117f95e (HEAD -> master) Merge branch 'feature1'
84e27fb Add feature 1 changes
可以看到,在master分支上生成了一个新的合并提交,同时保留了feature1分支上的提交记录。
3. 解决合并冲突
有时候,在合并分支的过程中会出现冲突,需要手动解决。在本例中,我们故意在feature2分支修改了file1.txt文件,与feature1分支的修改产生冲突。我们先切换到feature2分支,修改file1.txt文件:
$ git checkout feature2
$ echo "Feature 2 change in file1.txt" > file1.txt
$ git add file1.txt
$ git commit -m "Modify file1.txt in feature2"
接着,我们将feature2分支合并到master分支:
$ git checkout master
$ git merge --no-ff feature2
这次合并会产生冲突,Git会提示我们手动解决冲突。我们可以使用编辑工具打开冲突文件file1.txt,保留需要的修改并删除冲突标记。
解决冲突后,我们使用git add命令将修改后的文件标记为已解决,并提交合并结果:
$ git add file1.txt
$ git commit
完成合并后,我们查看提交记录,可以看到生成的合并提交:
$ git log --oneline
71ce2bf (HEAD -> master) Merge branch 'feature2'
b00eaca Modify file1.txt in feature2
117f95e Merge branch 'feature1'
84e27fb Add feature 1 changes
4. 总结
通过本文的介绍,我们了解了如何使用git merge命令来合并不同分支的代码,并保留各自的提交记录。在实际开发中,合并分支是非常常见的操作,掌握好合并的技巧和方法可以帮助我们更好地管理代码库的变化,提高团队协作效率。在使用git merge时,记得根据需要选择是否保留提交历史,以便轻松追踪代码变更和回滚不必要的修改。
极客笔记