git常用操作
背景
一般来说,大型项目有很多分支,一开始我们各自在自己的分支上进行开发,到最后合并的master分支上去
1.常用指令cherry-pick
在开发一个新功能的时候,可以使用这个指令
(1)可以先切换在master分支下
同步当前最新master代码
然后在此基础上创建最新的个人分支
1 | git checkout master |
这样,我们就创建了一个新的分支xxx/feat-11-10,可以用git status确认一下我们当前确实在这个分支上,如下图
(2)然后在xxx/feat-11-10这个分支上开发我们的代码
开发完成后,添加所有当前修改内容,并创建一个commit
1 | git add . |
这样我们就提交了一次commit,可以通过git log查看commit的记录
commit 41484d78558eceab6edf2f7c0c55d9c7c5bf5aff
(3)将本次提交合并到master分支
从本地分支xxx/feat-11-10切换到master分支
因为我们没有在master分支上修改,所以没有污染这个master分支,直接同步服务器上最新代码即可
同步了服务器最新代码之后,我们做一下cherry-pick将本地修改提交的commit切过来
如果有冲突的话,就一个个修改冲突,然后再git add . 再git cherry-pick –continue;如果没有冲突,就直接git cherry-pick –continue就行
1 | git checkout master |
进行如下操作
最后用git log看一下,确认在master分支上,已经将本地分支xxx/feat-11-10的commit切过来了
2.常用指令reset
2.1回退到某个提交
(1)如果在当前的干净分支上,修改了一些东西,提交了一个commit,然后又修改了一些东西,想把上一个提交撤销,两次修改并到一个commit里面
1 | git reset commit_id |
如下所示:
回退到指定的版本acbc4ee9745486dc0bc39a4d03c351fba528c545
而用git status来看的时候,发现本地的修改commit还在
(2)如果在当前的干净分支上,修改了一些东西,后来发现不需要这些改动,想直接回退到某个旧的分支
1 | git reset --hard commit_id |
如图所示:
回退到旧的版本,并且把比这个版本新的提交都清理掉了
2.2同步分支
(1)如果当前在一个落后的分支OSv1.0上,需要将master分支上的所有提交都同步过来
1 | 首先切到OSv1.0分支上 |
如下图所示:
将master分支上的所有提交覆盖到OSv1.0分支上
然后再强推到服务器上,即可在服务器端,也用master的提交覆盖到OSv1.0分支上