Git常用场景使用-分支操作

1. 拉取推送分支:

​     git branch 分支名 : 创建分支
​     git checkout 分支名 : 切换分支
​     git checkout –b 分支名 : 创建并切换到新分支

​     本地拉取分支后推送到远程:
​         git push <远程主机名><本地分支名>:<远程分支名>
        【注意】直接git push会将当前本地分支推送到对应远端同名分支,如果远端没有同名分支则会新建同名分支
    ​    【举例】git push 和git push origin branchTest是等效的,都是将本地branchTest分支推送到远端

2. 分支切换:

        举例的切换都是从branchTest切master分支

 【场景1】分支切换后提示: Your local changes to the following files would be overwritten by checkout

Git常用场景使用-分支操作

 【原因】:
    如同push出现冲突问题一样,该切换问题是因为当前branchTest修改代码后,和master代码冲突
    比如,master的File1未666666、777777两行;branchTest修改后把777777删掉了,切换的时候就会出现该问题;
    如果branchTest修改时,不对master的代码做改动,即单纯的添加888888,则不会出现该问题。

 【解决1】:
    Force Checkout会保留原汁原味的master代码,分支修改的代码不会出现再master
    Smart Checkout选择让你手动解决冲突,可参考:链接的第4点
                      Don’t Checkout 就是让你放弃切换分支

 【解决2】:
    Don’t Checkout放弃切换,然后commit一下,再切换,就不会有如上问题
    但这样会导致本地存在多个commit,到时还得合并多个本地commit

3. 在错误的分支修改了代码:

 【场景】在branchTest修改完代码后,发现分支错了,应该是要在master是修改的

 【解决1】:
    未commit情况下,切换master分支,如上解决冲突;
    commit了的话,可以reset后再切换;当然如果改动不大,可以切换后重新修改吧,
 【解决2】:
    如果能确定push前远端两个分支的代码是一样的, 那么可以git push origin branchTest:master将branchTest提交的代码推送到远端commit分支
 【解决3】:
     如果push前远端两个分支的代码不一样,会push rejected

   3-3-a. pull远端master代码到当前分支,会提示冲突,手动解决冲突

Git常用场景使用-分支操作

   3-3-b. 代码重新commit
    手动解决冲突后,可以看见log中,之前提交的commit已经断开了,所以需要重新提交commit

Git常用场景使用-分支操作

    重新commit后,会自动合并回来,这样就可以git push origin
branchTest:master

Git常用场景使用-分支操作

   【建议】修改代码前明确分支,提交代码前先拉取代码,有冲突则解决冲突。

4. 分支提交代码合并主分支

 【场景】分支修改push完了,任务结束了,需要合并到主分支上

 【举例】branchTest提交了修改,需要合并master

Git常用场景使用-分支操作
Git常用场景使用-分支操作

 【bash操作】
   3-1.在主干代码合并分支,执行git merge 远程仓库/分支名,例如:git merge origin/branchTest
   3-2. 在主干上push代码:git push

Git常用场景使用-分支操作
Git常用场景使用-分支操作

 【idea操作】
   3-1.执行下图的选项

Git常用场景使用-分支操作

   3-2. 勾选的是将要合并的分支,然后填上提交信息,然后再push就好了
     其实合并就是将branchTest的commit信息和内容合成一个新的commit到master分支上,然后再在master上push上去
     所以,这得保证新提交的代码已经push到分支上,才能去合并

Git常用场景使用-分支操作

 【小乌龟操作】
   3-1.切换到要合并的分支,即master后到工作空间执行下图的选项

Git常用场景使用-分支操作

   3-2.选择填写的东西和注意事项和上述idea操作一样,之后再push即可:

Git常用场景使用-分支操作

 【建议】合并操作时,最好主干代码重新拉取后再merge,如果冲突需要耐心解决冲突。

5. 同一个commit提交到不同的分支

 【场景】提交了update File2到branchTest分支,需要保持syncBranchTest分支同步修改
 【操作】可以像上述合并的方式提交,但需要代码已经合入了branchTest;除此之外,其实可以在push的时候选择新的分支即可

   在branchTest分支上操作,(不像merge时是在master上操作),push的时候选择syncBranchTest分支

Git常用场景使用-分支操作

-------------------------------------------------想到别的场景后续再补充------------------------------------------------------------