git的分支管理

之前学习了git管理个人仓库及传送远程仓库和获取远程仓库,下面就开始探索git的强大功能------分支管理

    在版本回退和时光机里,我们知道了master分支是一条线,还有一个指针HEAD来指向当前分支

    在实际工作中,master分支也就是主分支,记录着最终的开发版本,如果多人协作开发,就需要每个人创建自己的分支dev,在各自分支上开发完之后,再与master分支合并即可。

    1.创建dev分支,然后切换到dev分支   git checkout -b dev   相当于两条命令(1) git branch dev   (2) git checkout dev 

    2.用git branch 查看分支状态,前面带*号的为当前HEAD指向的分支

    3.在分支dev里修改后,提交  git add readme.txt      git commit -m "branch"    现在dev分支的工作完成

    4.切换回master分支  git checkout master

    5. 最后把dev分支的成果合并到master分支  git merge dev    默认采用fast-forward方式,这种快合并方式在log里看不到合并的迹象,可以用 --no-ff方式

    6.可以查看合并log  git  log --graph  之后再删除分支dev就好了, git branch -d dev  强行删除某条分支的话  git branch -D dev

 

  如果出现版本冲突怎么办?

 也就是dev上对某个文件进行了修改,master上对文件也进行了修改,现在你要把dev上的结果合并到master分支上,git就会懵逼了,我到底选择哪次的修改

解决冲突其实很简单 

      1. git status 查看是哪个文件冲突了

      2.cat readme.txt查看文件中哪里冲突了,git会用<<<<<<<=======>>>>>>>标记出不同分支的内容

      3. 再提交就ok啦!git add readme.txt      git commit -m "conflict fix"

 

  如果你正在自己的dev分支上开发某个功能,突然老板让你解决一个bug,但你正开发到一半,不能提交,怎么办?

其实很简单

     1.在自己的dev分支上,git stash 保存当前工作现场

      2.切换到master分支上,创建bug分支,解决完之后,合并到master分支

      3.然后回到自己的dev分支,git checkout dev   再  git stash list 会发现当时保存的现场

      4.git stash pop 恢复的同时把stash内容给删了(也可以先 git stash stash apply  再git stash drop)

      5.之后再运行 git stash list 会发现没有保存的现场了


  git remote 查看远程库的信息

  git remote -v 查看远程库的详细信息,包括远程库的地址

  git push origin master 推送master 分支到远程库

  git push origin dev 推送dev 分支到远程库

  如果你向origin/dev推送的时候,别的小伙伴已经向origin/dev推送过了怎么办?

其实很简单,和解决冲突类似

  1. git pull 获取到最新的提交

  2. 本地解决冲突,和上面提到的版本冲突类似

  3.再上传到远程库


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章