zoukankan      html  css  js  c++  java
  • git branch 分支管理

    在多人协作的情况下,master通常是稳定的分支.可以再建一些"develop","testing"等名称的分支.主管master的人做开发的话最好也建立自己的分支.

    命令操作

    git branch 列出当前已经checkout出来的分支,当前分支前边用星号表示.
    git branch -a 列出所有本地和远程的分支

    开始一项功能的开发工作时,基于某一分支创建分支。

    1. 如基于master创建新分支my
      $ git checkout -b my master
      Switched to a new branch "my"

    2. 切换到自己的分支my
      $ git checkout my
      本地文件将会发生变化,使用git log看一下提交的日志
      此时HEAD指针指向my分支中最新的commit id。

    3. 同步master到自己的分支(适当的时候)
      git merge --no-ff master

    4. 合并分支
      上一步其实就是合并操作,同样用法git merge [option] branch_name
      列出已合并到当前分支的其它分支: git branch --merged
      未合并到当前分支的分支: git branch --no-merged

    5. push
      将当前分支提交到关联的远程仓库的对应分支
      git push origin my

    6. 修改分支名称:
      git branch -m <oldname> <newname>

    7. 删除远程分支:
      推送一个空分支到远程分支,其实就是删除远程分支: git push origin :<branchName>
      在Git v1.7.0 之后,可以使用--delete选项删除远程分支: git push origin --delete <branchName>
      删除不存在对应远程分支的本地分支,比如远程的master分支:通过git remote show origin可以看出关联的远程分支处于stale(过时)状态,并提示使用git remote prune删除.使用 git remote prune origin 可以将其从本地版本库中去除。更简单的方法是使用fetch命令的-p选项,它在fetch之后删除掉没有与远程分支对应的本地分支:git fetch -p.

    更进一步

    切换分支时,如果工作区非clean状态,有如下几种处理方式:

    1. add并且commit,再checkout,提交到当前分支
    2. add但不commit,可以stash,然后checkout回来之后stash apply,在commit,提交到当前分支
    3. add但不commit,也不stash,直接checkout,然后再commit的话,记录就在切换分支下面。

    其背后的原因:一个本地的git repo只有一个工作区和暂存区,但是有多个分支的提交区,而我们的checkout只是将HEAD指针从一个分支切换到另一个分支。

    git-space

    命令提示符显示分支名称

    在bash命令行提示符中添加git仓库的当前branch名称:

    function git-branch-name {
      git symbolic-ref HEAD 2>/dev/null | cut -d"/" -f 3
    }
    function git-branch-prompt {
      local branch=`git-branch-name`
      if [ $branch ]; then printf " (%s)" $branch; fi
    }
    
    PS1='[33[01;32m]u@h[33[00m]:[33[01;34m]w[33[00m]$(git-branch-prompt)'$'
    ''$ '
    # 其中$'
    '是换行
    
  • 相关阅读:
    IOS 线程 +并发
    ios
    ios
    ios uitableviewcell动态计算高度
    ios 画圆环进度条
    ios -几种常见定时器
    ios 加载本地html css文件 ps:css和html必须在同一文件夹下面
    UISegmentedControl 分段器加载不同的viewcontroller
    iOS ----Pods-resources.sh Permission denied
    UIView的layout(布局)与draw(绘图)
  • 原文地址:https://www.cnblogs.com/makefile/p/git-branch.html
Copyright © 2011-2022 走看看