关于Git合并代码的方式说明
文章目录
- 关于Git合并代码的方式说明
- 前情提要
- 开始合并
- 方式一:git merge
- 方式二:git cherry-pick
- 方式三:git checkout
- Git跨仓库合并的准备事项
- 前提
- 拉取源仓库代码
前情提要
同仓库不同分支代码的合并可直接往下看文档说明,跨仓库分支代码的合并操作之前要先拉取源仓库分支代码,
请参考:关于Git跨仓库合并代码的准备事项
另注: 以下操作说明均以Git客户端的Git Bash命令窗口操作,请提前下载TortoiseGit客户端并配置好SSH免密登录。
开始合并
打开分支代码所在文件目录,右击空白处点击Git Bash Here,打开命令执行窗口
PS: 不想敲命令的话,TortoiseGit也提供了GUI操作页面—Git GUI Here
方式一:git merge
使用场景:若是针对整个分支的覆盖合并,可使用该命令,若只是部分更新,不要使用该命令!!!不要使用!!!不要!!!
该命令简单上网搜索即可,此处不做赘述。
方式二:git cherry-pick
使用场景:针对单次提交、多次提交的合并操作
-
git cherry-pick <commitId>: 单个commit的合并。
举个栗子:
-
使用git checkout -b命令新建dev分支,
-
使用git checkout master命令切回master分支,修改当前目录下的test文件。使用git status查看文件状态。
-
提交该文件,红框内就是本次提交的commitId
**注意了注意了注意了:**我这里要提交我修改的全部文件 所以后面带的参数是-am 若是部分文件的提交 那就是-m
-
切到dev分支,进行合并
-
执行单次commit合并的命令,合并到dev后会形成一个新的commitId
-
查看dev分支上当前提交者的具体内容
注: --author 提交者 后面带的参数就是提交者的账号 --stat是优化内容格式展示的命令,非必须
-
-
git cherry-pick <commitId-1> <commitId-2>…:多个commit的合并
举个栗子:本次栗子中的命令均是使用了命令缩写,缩写配置可上网查看,此处概不赘述。
-
在master分支上连续提交两次修改
-
切换到dev分支,同时合并此次的两次commit
-
查看dev分支的提交日志
-
-
git cherry-pick <commitId-1>…<commitId-n>/<commitId-1>^…<commitId-n>:某个commit区间的合并
注意!注意!!注意!!!:区间范围前者前开后闭,后者双闭合
举个栗子:
- 在master上执行三次commit
-
切到dev分支,采用区间合并方式来合并代码
**注意注意:**本次执行的是前开后闭的区间合并命令,所以起始的commitId是倒四的commitId
-
dev的提交日志查看验证
方式三:git checkout
使用场景:针对文件的覆盖合并
举个栗子:
-
在master分支上修改test.txt文件
-
在dev上也修改test.txt文件
-
放弃dev上的修改,以master分支上的test文件修改为主,就可以直接把master分支上的test文件覆盖过来
Git跨仓库合并的准备事项
本文举例均已文档撰写人本地文档目录为例,文档阅读者要以自身文档目录为准参考操作
前提
以下称呼要拉取的代码仓库为源仓库,合并到的仓库为目标仓库
从源仓库拉取代码合并到目标仓库
拉取源仓库代码
- 步骤一:进入九师市域git仓库目录,右键打开Git客户端执行窗口
-
步骤二: 执行添加源仓库地址,并命名为src
添加成功验证:
3.步骤三: 代码拉取
-
步骤三: 新建分支,并将源仓库的master分支代码拉取到此分支下
说明一下哦:git checkout -b 新建分支并取名source,并将源仓库src下的master分支代码拉取到新建的source分支上
-
结束
跨仓库合并代码的准备事项至此结束,后续的合并操作就是两个分支的合并操作了,参考前面分支合并操作即可。