在项目开发的过程中总是遇到一些需要将其它代码库中的一些修改合并到当前项目的代码库上的情况。
假如本地有两个代码库,分别指向服务器上的不同代码库,需要将本地的代码库1中的一些修改合并到代码库2,这个时候可以按照以下方式进行
库1:AndroidM_3561
库2:AndroidM_3561_after
zhaojr@zhaojr-OptiPlex-7040:~/project$ ls
AndroidM_3561
AndroidM_3561_after
1、将本地的AndroidM_3561库作为远程库添加到本地的AndroidM_3561_after库中,取名为other,如下:
zhaojr@zhaojr-OptiPlex-7040:~/project/AndroidM_3561_after$ git remote add other ./AndroidM_3561
2、将已经添加的远程AndroidM_3561抓取数据到本地的AndroidM_3561_after库中
zhaojr@zhaojr-OptiPlex-7040:~/project/AndroidM_3561_after$ git fetch other
zhaojr@zhaojr-OptiPlex-7040:~/project/AndroidM_3561_after$ git branch -a
* Devlopment
master
remotes/origin/Devlopment
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/other/Development
remotes/other/master
3、将AndroidM_3561仓库抓去的Development分支作为新分支checkout到本地,新分支名设定为other_Development
zhaojr@zhaojr-OptiPlex-7040:~/project/AndroidM_3561_after$ git checkout -b other_Development other/Development
zhaojr@zhaojr-OptiPlex-7040:~/project/AndroidM_3561_after$ git checkout -b other_Development other/Development
zhaojr@zhaojr-OptiPlex-7040:~/project/AndroidM_3561_after$ git branch -a
* other_Development
master
Devlopment
remotes/origin/Devlopment
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/other/Development
remotes/other/master
zhaojr@zhaojr-OptiPlex-7040:~/project/AndroidM_3561_after$ git checkout Development
Switched to branch 'Development'
4、切换回AndroidM_3561_after的Development分支
zhaojr@zhaojr-OptiPlex-7040:~/project/AndroidM_3561_after$ git checkout Development
Switched to branch 'Development'
zhaojr@zhaojr-OptiPlex-7040:~/project/AndroidM_3561_after$ git branch -a
* Devlopment
master
other_Development
remotes/origin/Devlopment
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/other/Development
remotes/other/master
5、将AndroidM_3561库Development分支的修改合并入AndroidM_3561_after的Development分支
zhaojr@zhaojr-OptiPlex-7040:~/project/AndroidM_3561_after$ git merage other_Development 或者使用 git cherry-piack xxxxxxx(commit ID)一个个commit合并
说明:
git cherry-piack xxxxxxx(commit ID)
这个是针对单独的commit ID进行合并的。
如果想把库1:AndroidM_3561库中修改的所有commit合并到AndroidM_3561_after,并且保留所有修改的commit日志,那么就使用git cherry-piack xxxxxxx(commit ID) 一个个合并,这样就可以保留库1:AndroidM_3561库中的每个上传的commit,同时可以只合并库1:AndroidM_3561库中一部分commit,不需要全部合并。