1. git cherry-pick
如果我们同时在a,b两个分支上开发,b分支需要合并a分支上某个指定的提交,这时这个命令就派上用场了,具体操作步骤如下:
- 切换到a分支,使用git log查看a分支的提交记录,假如我们想合并“数据权限优化”的提交,复制该提交的commit ID
2.切换到b分支,使用git cherry-pick [第一步复制的commit id]
3.使用git push origin提交即可
2. git diff
如果我们同时在a,b分支上开发,b分支中包含a分支的代码,这时项目经理说b分支需要单独上线,这时我们就需要剥离a分支的代码,这时git diff就派上用场了,具体操作步骤如下:
- 切换到b分支,然后使用 git diff a b --stat查看两个分支之间那些文件不同,从图中可以看出有9个文件不同,并且列出了每个不同文件的路径
2. 查看具体每个文件的不同:依次复制第一步中列出的每个文件的相对路径,使用git diff a b [文件相对路径],如下图,其中红色的是a分支中代码,绿色是b分支代码
3. git remote add 合并不同仓库分支的代码
如果公司上线了一个应用,然后业务人员又接到一个类似的应用,这是项目经理会新建一个仓库b作为这个应用的代码库,这是我们就需要将已上线的那个应用的仓库a的代码合并到这个新建的仓库,基于此再继续开发。这时这个命令就派上用场了,具体操作步骤如下:
- 使用git remote add companyMaster [a仓库的远程地址] companyMaster可以自定义
2. 这时可以使用git remote 查看本地远程仓库,companyMaster是a仓库,origin是b仓库
-
拉取a仓库数据到b仓库:git fetch companyMaster
-
在b仓库新建分支并且拉取a仓库的指定分支代码到新建的分支,如下图:其中feat-mode-sm-copy是b仓库新建的分支,feat-temp-merge-jt是a仓库指定的分支,或者直接采用git merge 命令将a仓库指定分支代码合并到b仓库已经存在的分支上。可根据自己需求选择使用
5. 最后使用git push origin就可将拉取到a仓库指定分支的代码提交到b的远程仓库