git学习——<一>git安装

git学习——<二>git配置文件

git学习——<三>git操作

git学习——<四>git版本管理

一、提出问题

  今天开发的过程中遇到一个问题,A组接到开发任务要修改file文件,B组在此之前的15天为了完成自己的开发任务对file文件进行了修改,为了同步代码,B组将自己未完成的模块file文件提交到了cvs上。A对此一无所知,A组在完成开发任务后,把file文件完全上到了现网环境,报错了。

  当然,避免上述问题的途径很多,有想法的朋友可以帮忙提议解决下。但是在使用git的时候,我就突然想到,如果每个团队是在主分支上迁出一个分支工作,直到自己的工作完成之后,再把代码提交到主分支上,那么别人上文件的时候从主分支上迁出的文件上现网环境也不会出上述的问题了。所以,学会建分支,在分支上开发代码,也很实用。

二、git分支

  git把每次提交串成一条时间线,这条时间线就是一个分支。

  如前面几个讲解里所讲到的:首次提交是一个master主分支。head不是指向提交,而是指向master,master才指向提交,故head指向的就是“当前分支”。创你建一个list分支,此时,就是一个创建了一个叫list的指针,指向了master相同的commit。而你的head指向了list,其他人的head依然指向master。

同理,如果你想删除list分支,其实没有删掉list分支提交的东西,只是删除了list的指针。

  1.创建list分支

git checkout -b list    其中-b表示:创建并切换
  2.查看当前分支
    git branch会列出所有分支,当前分支有一个*号

  3.提交内容到当前的分支

    git add
git commit

  4.list分支的工作完成后,切换回master分支

    git checkout master

  5.把list分支的工作成果合并到master分支上

    git merge list
git merge命令用于合并指定分支到当前分支

  6.删除list分支

    git branch -d list

三、解决冲突

  1.在master上创建分支

git branche -b list

2.在该分支上编辑readme.txt文件

       3.然后切换到master分支git checkout master,编辑readme.txt文件
       4.合并list到master
        git merge list

5.解决冲突

  冲突会包留在文件中,两个部分被===========================分割开。需要人工方式修改整合文件。

  6.删除分支

git branch -d list

  7.查看分支合并的路径

git log --graph --pretty=oneline --abbrev-commit

四、bug分支

  假设,你在list分支上工作。此时master上出现了bug需要修复,那么你必须切换到master分支并修复该bug。

1.于是,你需要保存当前list分支上已工作的内容:把当前工作现场“储藏”起来
    git stash

可以用git status查看当前工作区是否干净

2.切换到要修复bug的分支,然后创建一个新的分支去修复bug
    修复完bug,提交合
3.切换回你之前的工作分支,恢复工作区
    可以使用git stash list查看之前保存的工作区中的内容
git stash pop
  可以恢复原工作区,并把stash中保留的内容删除掉,否则会一直存在。
    相当于如下两条命令:
            git stash apply
            git stash drop
    再用git stash list查看就不存在任何元素了

五、总结

git学习——<五>git分支的更多相关文章

  1. git学习(五) git diff操作

    git diff操作 git diff用于比较差异: git diff 不加任何参数 用于比较当前工作区跟暂存区的差异 git diff --cached 或者--staged 对比暂存区(git a ...

  2. 【git学习五】git基础之git分支

    1.背景                最早用github的时候,我傻傻的问舍友大神,git里面的branch是干什么的,他用了非常直白的解释,我至今还记得."branch就是你能够自己建立 ...

  3. Git 学习之git 分支(三)

    Git 分支 几乎每一种版本控制系统都以某种形式支持分支.使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作.在很多版本控制系统中,这是个昂贵的过程,常常需要创建一个源代码目录的 ...

  4. git学习之branch分支

    作为新手,站在我的角度肤浅的来理解,分支就是相当于开辟了一个新的临时工作区,在这个工作区进行文件代码改动,然后在合并到master主工作区,这样能保证主工作区的安全性和稳定性,对于团队协作尤为重要. ...

  5. git学习4:分支管理

    每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,这个分支叫主分支,即master分支,HEAD指向master,master指向提交,所以,HEAD指向的就 ...

  6. git学习笔记09-bug分支-自己的分支改到一半了-要去改bug怎么办?

    当你接到一个修复一个代号101的bug的任务时,很自然地,你想创建一个分支issue-101来修复它,但是,等等,当前正在dev上进行的工作还没有提交: 并不是你不想提交,而是工作只进行到一半,还没法 ...

  7. git学习(五):git diff魔法

    不同参数下git diff输出并不相同,理解了工作区,暂存区和版本库的关系之后就很容易理解diff了. 工作区.暂存区和版本库的目录树浏览 清除工作区中未被git管理的文件 git clean -fd ...

  8. Git系列五之分支管理

    1.Git分支管理 分支即是平行空间,假设你在为某个手机系统研发拍照功能,代码已经完成了80%,但如果将这不完整的代码直接提交到git仓库中,又有可能影响到其他人的工作,此时我们便可以在该软件的项目之 ...

  9. git入门五(分支合并冲突和衍合)

    分支合并冲突的处理   合并分支的冲突时在不同的分支中修改了同一个文件的同一部分,程序无法把两份有差异的文件合并,这时候需要人为的干预解决冲突.当前处于master 分支,当dev 分支和master ...

随机推荐

  1. windows下wim配置成IDE

    1.配置文件_wimrc set fileencodings=utf-,ucs-bom,cp936,big5 set fileencoding=utf- source $VIMRUNTIME/vimr ...

  2. linux系统中/etc/syslog.conf文件解读

    1: syslog.conf的介绍 对于不同类型的Unix,标准UnixLog系统的设置,实际上除了一些关键词的不同,系统的syslog.conf格式是相同的.syslog采用可配置的.统一的系统登记 ...

  3. selenuim爬虫实战 (下)

    SuperLOFTERDownloader7.java package test; import java.io.IOException; import java.util.ArrayList; im ...

  4. 同过增强Connection类[重写了close的方法]实现的从连接池取出连接并放回连接的简单的实现流程

    package tk.dong.connection.util; import java.io.IOException;import java.io.InputStream;import java.i ...

  5. CSS(七):浮动

    一.float属性取值:left:左浮动right:右浮动none:不浮动 先看下面的一个例子: <!DOCTYPE html> <html lang="en"& ...

  6. 集中精力的重要性(The Importance of Focus)

    集中精力的重要性(The Importance of Focus) 在当今激烈竞争的经济中,你需要集中精力使得你公司的独特方面精益求精.并且你需要每天将精力集中在改进你的公司上.通过终极外包,单干型企 ...

  7. 数据库 Proc编程一

    proc编程 嵌入式sql:sql写入到C语言程序中 proc编程头文件路径 app\xxx\product\\dbhome_1\precomp\public proc编程要注意proc编译器也会使用 ...

  8. 关于Cocos2d-x中两个场景之间参数的传递

    两个场景之间,有的时候要进行参数传递,如果想通过实例化出一个场景,从而得到属性和方法是不对的想法 你有两个场景,第一场景是用户登录界面,第二场景则是你登录后的界面,你如何将用户登录的值传到第二个场景呢 ...

  9. 书籍:Building Secure PHP Apps

    Building Secure PHP Apps https://leanpub.com/buildingsecurephpapps

  10. jQuery实现瀑布流布局详解(PC和移动端)

    首先我们将如下样式的若干个单元写进body中,并将“box”向左浮动: <div class="box">  <img class="img" ...