zoukankan      html  css  js  c++  java
  • git杂记-分支简介

    1. 分支创建
      //只创建分支不切换;
      $ git branch testing

      //创建并切换分支
      $ git checkout -b iss53
    2. 查看各个分支的指向对象
      $ git log --oneline --decorate
      f30ab (HEAD, master, testing) add feature #32 - ability to add new
      34ac2 fixed bug #1328 - stack overflow under certain conditions
      98ca9 initial commit of my project

      //当前 “master” 和 “testing” 分支均指向校验和以 f30ab 开头的提交对象。
    3. 分支切换
      $ git checkout testing
    4. 查看项目交叉历史
      $ git log --oneline --decorate --graph --all
      * c2b9e (HEAD, master) made other changes
      | * 87ab2 (testing) made a change
      |/
      * f30ab add feature #32 - ability to add new formats to the
      * 34ac2 fixed bug #1328 - stack overflow under certain conditions
      * 98ca9 initial commit of my project
    5. 合并分支,在当前分支合并某某分支
      1:如果当前分支是合并目标分支的直接祖先,就可以使用快速合并,当前分支的指针直接移动到目标分支;  例如:master分支合并hotfix分支
      $ git checkout master
      $ git merge hotfix
      Updating f42c576..3a0874c
      Fast-forward
       index.html | 2 ++
       1 file changed, 2 insertions(+)


      2:如果当前分支并不是合并目标分支的直接祖先,Git不得不做一些额外的工作。出现这种情况的时候,Git会使用两个分支的末端所指的快照(C4 和 C5)以及这两个分支的工作祖先(C2),做一个简单的三方合并。 例如:master分支合并iss53分支

      
      
    6. 删除分支
      //删除hotfix分支
      $ git branch -d hotfix
      Deleted branch hotfix (3a0874c).
    7. 合并的冲突处理方案
      //合并分支时产生冲突,指示index.html文件有冲突
      $ git merge iss53
      Auto-merging index.html
      CONFLICT (content): Merge conflict in index.html
      Automatic merge failed; fix conflicts and then commit the result.
      //观察文件状态
      $ git status
      On branch master
      You have unmerged paths.
        (fix conflicts and run "git commit")
      
      Unmerged paths:
        (use "git add <file>..." to mark resolution)
      
          both modified:      index.html
      
      no changes added to commit (use "git add" and/or "git commit -a")
      //使用工具打开冲突的文件
      
      <<<<<<< HEAD:index.html
      <div id="footer">contact : email.support@github.com</div>
      =======
      <div id="footer">
       please contact us at support@github.com
      </div>
      >>>>>>> iss53:index.html
      //把文件手工修改为我们想要的内容
      <div id="footer">
      please contact us at email.support@github.com
      </div>
      
      //重新添加到暂存库
      git add index.html
      
      //重新添加到版本库
      git commit -m '解决冲突文件index.html'
    8. 查看所有的分支列表
      $ git branch
        iss53
      * master
        testing
      
      *代表的是当前的分支
    9. 查看每个分支的最后一次提交
      $ git branch -v
        iss53   93b412c fix javascript issue
      * master  7a98805 Merge branch 'iss53'
        testing 782fd34 add scott to the author list in the readmes
    10. 筛选哪些分支已经合并到当前分支,哪些分支没有合并到当前分支
      //查看哪些分支已经合并到当前分支;      使用git branch -d iss53可以正常删除已合并的分支;
      $ git branch --merged
        iss53
      * master
      
      //查看哪些分支目前还没有合并到当前分支;使用git branch -d testing不能正常删除没有被合并的分支,需用git branch -D testing强制删除
      $ git branch --no-merged
        testing
    11. 分支开发工作流
      1. 长期分支
      2. 特性分支
    12. 远程分支
      1. 远程分支的存在方式
        • 以 (remote)/(branch) 形式命名,例如: origin/master
      2. 克隆之后的服务器与本地仓库
        • 系统一个本地分支会对应一个远程分支,默认状况下会一一对应。
      3. 更新本地仓库的远程分支
        //远程主机的所有更新全部拉取到本地中;只拉取,不会自动合并;相当于origin/master只读分支不断向前走动
        $ git fetch <远程主机名>
        
        //只拉取特定的分支
        $ git fetch <远程主机名> <分支名>

        //拉取并自动合并
        $ git pull <远程主机名>
      4. 推送分支
        //推送serverfix分支
        $ git push origin serverfix
        Counting objects: 24, done.
        Delta compression using up to 8 threads.
        Compressing objects: 100% (15/15), done.
        Writing objects: 100% (24/24), 1.91 KiB | 0 bytes/s, done.
        Total 24 (delta 2), reused 0 (delta 0)
        To https://github.com/schacon/simplegit
         * [new branch]      serverfix -> serverfix
      5. 在远程分支的基础上进行工作
        1. 合并远程分支
          git merge origin/serverfix
        2. 在远程分支上创建一个分支
          $ git checkout -b serverfix origin/serverfix
          Branch serverfix set up to track remote branch serverfix from origin.
          Switched to a new branch 'serverfix'
      6. 跟踪分支
        //当运行fetch的时候,本地分支 sf(新建) 会自动从 origin/serverfix 拉取。
        $ git checkout -b sf origin/serverfix Branch sf set up to track remote branch serverfix from origin. Switched to a new branch 'sf'

        //设置本地已有的分支(当前分支)跟踪刚刚拉取下来的一个分支
        $ git branch -u origin/serverfix
      7. 列出所有的跟踪分支,并指出本地分支是否是领先、落后。
        $ git branch -vv
          iss53     7e424c3 [origin/iss53: ahead 2] forgot the brackets  //超前两个提交
          master    1ae2a45 [origin/master] deploying index fix          //与远程分支同步
        * serverfix f8674d9 [teamone/server-fix-good: ahead 3, behind 1] this should do it  //超前三个提交,落后一个提交
          testing   5ea463a trying something new                         //没有跟踪任何远程分支;
      8. 删除远程分支
        $ git push origin --delete serverfix
        To https://github.com/schacon/simplegit
         - [deleted]         serverfix
  • 相关阅读:
    -_-#【Angular】工具函数
    -_-#【m3u】
    -_-#【Angular】依赖注入
    -_-#【响应式图片】
    CODEVS——T1519 过路费
    CODEVS——T1979 第K个数
    Vijos——T1279 Leave-绿光
    HDU——T 2824 The Euler function
    洛谷——P1096 Hanoi双塔问题
    python(36)- 测试题
  • 原文地址:https://www.cnblogs.com/oufeng/p/6697026.html
Copyright © 2011-2022 走看看