一、无冲突的情况
1、合并其它分支某次提交
切换到主分支,想把其他分支的某次commit修改 合并到主分支上,
可以用 git cherry-pick 命令
比如,其它分支,某次提交的commit Hash 是30e48158badc39801f1ce3cb375a07b872d6f220 ,
想合并这次提交
可以 git cherry-pick 30e48158badc39801f1ce3cb375a07b872d6f220
示例:
$ git status
On branch 2.0-cef91
Your branch is ahead of 'origin/2.0-cef91' by 1 commit.
(use "git push" to publish your local commits)
2、查看合并提交后,修改了什么
当前分支,自动多了一个提交
可以 使用git log ,看看当前分支commit log
当前HEAD 是最新COMMIT
origin是之前主分支的commit提交
查看 修改了什么 使用 git diff 这个origin分支的HASH值
二、有冲突的情况
1、合并其它分支另一个commit
这个commit分支修改的比较多,可能有冲突
这个就有冲突,有些dll lib 二进制文件冲突了
2、看合并了哪些,冲突了哪些
1)、git status
2)、取消cherry-pity
有冲突的话,可以先取消
git cherry-pick --abort
三、解决冲突
1、git cherry-pick -n <commit_id>
不自动提交
-n, --no-commit don't automatically commit
2、git status 查看冲突文件
3、冲突的文件 忽略掉
我想保留主分支上文件,忽略掉commit分支上冲突的文件
需要用到 git reset git checkout 命令
1)、git reset
重置暂存区的文件与上一次的提交(commit)保持一致
这里重置冲突的文件,与上次提交时保持一致
2)、git checkout -- file
将暂存区文件拉取还原
3)这两个命令目的
就是将冲突文件重置为冲突之前的状态,忽略掉commit 分支的修改
git reset HEAD <file_name>
git checkout -- <file_name>
4)没有冲突文件后,重新commit
这样就忽略了冲突,只合并了想合并的文件了