Git command detail Branch

在不同的分支上的内容是不一样的,切换到不同分支,工作区的文件内容也是不一样的

分支管理

  • 创建与合并分支
  • git branch 可以查看当前分支状态,分支的个数 此时master一个分支
  • git checkout -b newBranch 新建一个分支 newBranch
  • git branch 此时分支多了一个newBranch
  • git add index.html 将文件的变动添加到newBranch分支上
  • git commit -m’newBranch first’ 新建分支第一次commit,新建分支线延长
  • git checkout master 回到master主分支
  • 在newBranch分支上对文件做的改动并没有在master分支上的文件上显示
  • git merge newBranch 将新建的分支和主分支合并
  • 此时在新建的分支上做的变动会在之分支上显示出来

解决冲突

  • echo ‘content’ > index.html 可以向文件中写入内容,会先清空文件中的内容
  • echo ‘content’ >> index.html 可以向文件中添加内容,原来的内容不会被清空
  • git checkout -b newBranch2
  • git add index.html
  • git commit -m’commitNewBranch2’
  • 以上操作在 newBranch2 将文件内容改动,commit一次
  • git checkout master
  • git add index.html
  • git commit -m’commitmaster2’
  • 以上操作在master主分支将文件改动,commit一次
  • git merge newBranch2 此时合并会发生冲突,根本原因是master分支和newBrach2分支都提交了
  • 注意这个时候必须先手动解决冲突,然后再次提交
  • 在主分支上再次commit
  • git add index.html
  • git commit -m’ conflict fix’
  • git log –graph –pretty=oneline –abbrev-commit 可以查看分支合并的状况

在分支合并之后可以选择将被合并的分支删除

  • git branch -d newBranch 可以删除newBranch 分支

分支管理策略

通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

合并分支时,加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward`合并就看不出来曾经做过合并

  • git merge –on-ff -m’merge with –on-ff’ dev dev是一个新的分支,在这个新的分支上做改动

和远程仓库进行对接

  • 本地master ——>push本地master ——>远程就有了master分支 ——> 本地新建分支teacher——> push本地teacher——>

merge之后可以删除分支,不删除也可以

当从远程仓库克隆的时候,仅仅克隆的是master分支,如果想要远程其他分支上的数据,比如master2分支

  • 可以在本地新建一个分支master2,用于存放pull下来的分支
  • 然后切换到本地该分支,进行pull远程仓库那个分支 git pull origin master2