代码管理的两种方式

102 阅读2分钟

常用的merge的方式

使用场景和流程:

  1. master分支有c1和c2两个提交;
  2. 自己从master分支拉取新分支dev进行开发, 提交c3,c4,c5;
  3. 此时有其他人合并了某个提交c6到master分支;
  4. dev分支开发完毕,需要合并内容到master分支, 此时先切换到master分支( git checkout master );
  5. 然后先拉取master分支上最新的内容( git pull origin master )到本地; 此时会拉取到远程master上的c6内容;
  6. 再使用 git merge dev 将本地的dev分支提交合并到本地的master分支,有冲突就解决冲突;
  7. 然后提交本地合并好的 master分支到远程 ( git push origin master );此时本地和远程master都是最新的
  8. 最后将本地master合并到dev分支,并将dev推送到远程 ( git checkout dev ; git merge master ; git push origin dev ) ; 此时dev分支远程和本地都是最新的;

以上非线性提交;

rebase的方式

使用场景和流程:

  1. 提交和拉分支 和上面merge的方式一样, 就是合并的区别
  2. 在使用rebase命令之前需要将master分支拉到最新
  3. 切换分支到需要rebase的分支,这里是dev分支
  4. 执行git rebase master,有冲突就解决冲突,解决后直接git add . 再git rebase --continue即可
  5. 切换到master分支,执行git merge dev
  6. 发现采用rebase的方式进行分支合并,整个master分支并没有多出一个新的commit,原来dev分支上的那几次(C3,C4,C5)commit在rebase之后其hash值发生了变化,不在是当初在dev分支上提交的时候的hash值了,但是提交的内容被全部复制保留了,并且整个master分支的commit记录呈线性记录