1、先切换分支到master
git checkout master
2、目前正处于主干上,执行命令,将分支从最后一个commit合并到主干上
git rebase --onto cb4023015fff0d7fe6677bc24bd24deafe7a7d0e
3、如果只想合并指定commit,不包含其他commit的话,使用
git cherry-pick cb4023015fff0d7fe6677bc24bd24deafe7a7d0e
二、合并分支A到分支B(此时B为master角色)
1、先进入分支B
git checkout B
2、使用合并命令
git merge A
3、合并完成,解决冲突即可。
三、git创建分支并提交到远程服务器。
git branch test。创建分支test
git checkout test 。切换到test分支
git checkout -b test。创建分支test并切换到test分支
git push origin test。提交到远程分支test
查看两个分支之间的改变,并将结果保存起来
git diff commit_id1 commit_id2 >> update.diff
合并某个commit到指定分支
git log # 查看commit_id
git checkout my_branch # 切换到指定分支
git cherry-pick commit_id # 将commit_id的提交合并到当前分支
合并一系列的commits到指定分支
假设需要合并feature分支上的commit1 ~ commit4 到master
首先,基于feature分支创建一个新的分支,并指定最后的commit_id:
git checkout -b newbranch commit4
然后,rebase这个新分支的commit到master(--ontomaster)。commit1^ 指明从哪个特定的commit开始:
git rebase --onto master commit1^
比较两个版本之间的差异
git diff commit-id-1 commit-id-2 > d:/diff.txt
结果文件diff.txt
中:
"-"号开头的表示
commit-id-2
相对commit-id-1
减少了的内容。
"+"号开头的表示commit-id-2
相对commit-id-1
增加了的内容。
切换分支的时候命令打错了,git checkout 后面没有跟分支名,结果git status,很多delete的文件,直接冒冷汗,git add ,commit 之后发现本地与远程确实是删除了很多文件,之前也有过一次,当时是从新换了一个目录重新拉代码。。。麻烦的很
把情况告诉了同事,给了我建议,删除这个分支,重新拉,于是开始了此操作。
我现在在dev20181018分支上,想删除dev20181018分支
1 先切换到别的分支: git checkout dev20180927
2 删除本地分支: git branch -d dev20181018
3 如果删除不了可以强制删除,git branch -D dev20181018
4 有必要的情况下,删除远程分支:git push origin --delete dev20181018
5 在从公用的仓库fetch代码:git fetch origin dev20181018:dev20181018
6 然后切换分支即可:git checkout dev20181018
注:上述操作是删除个人本地和个人远程分支,如果只删除个人本地,请忽略第4步
git log dev ^master
同理查看 master 中有,而 dev 中没有的内容:
git log master ^dev
git log master..dev
注意,列出来的是两个点后边(此处即dev)多提交的内容。同理,想知道 master 比 dev 多提交了什么:
git log dev..master
git log dev...master
git log --left-right dev...master
注意 commit 后面的箭头,根据我们在 –left-right dev…master 的顺序,左箭头 < 表示是 dev 的,右箭头 > 表示是 master的。
截图中表示这三个提交都是在 master 分支上的