以前总结的一些git操作,分享在这里.

Git 保存的不是文件差异或者变化量,而只是一系列文件快照。

 
- 列出当前所有分支
git branch <--merge> | <--no-merged>
- 创建分支
git branch <branch_name> {[SHA-1]/Tag}
- 切换分支
git checkout <branch_name>
- 新建并切换到该分支
git checkout -b <new branch-name>
-删除分支
git checkout -d <branch-name>
-合并分支
git merge <branch-name>
-分享分支
git push <远程仓库名> <分支名>
-Git中从远程的分支获取最新的版本到本地有这样2个命令:
git fetch:相当于是从远程获取最新版本到本地,不会自动merge
          git fetch origin master:tmp

git diff tmp 
git merge tmp

git pull:相当于是从远程获取最新版本并merge到本地
上述命令其实相当于git fetch 和 git merge
在实际使用中,git fetch更安全一些
因为在merge前,我们可以查看更新情况,然后再决定是否合并
 
分支进行开发的工作流程
    当进行分支管理的时候,这些分支全部都是本地分支,这一点很重要。当你在使用分支及合并的时候,一切都是在你自己的 Git 仓库中进行的 — 完全不涉及与服务器的交互。
 
远程分支
如果你有个叫 serverfix 的分支需要和他人一起开发,可以运行 git push (远程仓库名) (分支名)
    git push origin serverfix
Git 自动把 serverfix 分支名扩展为refs/heads/serverfix:refs/heads/serverfix,意为“取出我在本地的 serverfix 分支,推送到远程仓库的 serverfix 分支中去”。
可以修改远程分支名
git push origin serverfix:awesomebranch
                本地分支名:远程分支名
 
git branch -a : -a参数可以查看远程分支,远程分支会用红色表示出来
    git push origin --delete <branchName>
    git push origin :<branchName>
    git push origin --delete tag <tagname>
    git tag -d <tagname>     git push origin :refs/tags/<tagname>
    git push --tags

更简单的方法是使用这个命令,它在fetch之后删除掉没有与远程分支对应的本地分支:
    git fetch -p
 
从远程分支 checkout 出来的本地分支,称为 跟踪分支 (tracking branch)。跟踪分支是一种和某个远程分支有直接联系的本地分支。在跟踪分支里输入 git push,Git 会自行推断应该向哪个服务器的哪个分支推送数据。同样,在这些分支里运行 git pull 会获取所有远程索引,并把它们的数据都合并到本地分支中来。
git checkout --track origin/serverfix
 
git cherry-pick简介
git cherry-pick用于把另一个本地分支的commit修改应用到当前分支。
简单用法
git cherry-pick <commit id>
如果在cherry-pick 的过程中出现了冲突,就跟普通的冲突一样,手工解决。执行git status 看哪些文件出现冲突,接着手动解决冲突的文件,然后通过git add把改到添加到索引,最后执行git commit提交修改。
-e::
--edit::
With this option, 'git cherry-pick' will let you edit the commit
message prior to committing.
 
-x::
When recording the commit, append to the original commit
message a note that indicates which commit this change
was cherry-picked from.  Append the note only for cherry
picks without conflicts.  Do not use this option if
you are cherry-picking from your private branch because
the information is useless to the recipient.  If on the
other hand you are cherry-picking between two publicly
visible branches (e.g. backporting a fix to a
maintenance branch for an older release from a
development branch), adding this information can be
useful.
 
git format-patch
用git format-patch生成一个patch
git format-patch -M master
git format-patch [commit ID]
看,这次多了好多东西,不仅有diff的信息,还有提交者,时间等等,仔细一看你会发现,这是个E-mail的文件,你可以直接发送它!
 
这种patch要用git am来应用。
git am 
git am *.patch; 如果merge失败,需要处理冲突
在使用git-am之前, 你要首先git am –abort 一次,来放弃掉以前的am信息,这样才可以进行一次全新的am。不然会遇到这样的错误。
如果
 
- 用git diff制作一个patch
git diff | tee patch.patch
 

master分支是整个项目的主分支。

所有其他分支都直接或间接源自master。master分支是可直接用于产品发布的代码。

develop分支反映最新的开发进程。

develop中的代码总是可以完整build的。当develop中的代码进入稳定状态(修复了绝大多数bug)准备release时,所有develop中的更改将通过release branch最终merge到master。

除master和develop以外的分支都是临时分支。当这些临时分支完成其使命,就可以删除它们。我们先看feather分支。

feather分支用于某个新feather的开发,源自develop,并最终merge到develop。

feather分支最终的结局要么合并到develop branch,要么被抛弃。feather分支用如下命令创建:

# git checkout –b my feather develop

完成后将这个feather合并到develop:

# git checkout develop

# git merge --no-ff myfeather

# git branch –d myfeather

# git push origin develop

合并时--no-ff选项避免fast forward。使用该选项和不使用该选项得到的分支路线图分别如下:

release分支用于准备新版本的发布。源自develop,merge到develop和master。

release分支仅修复小的bug,完成准备版本号,build date等工作。而develop分支可以同时开始新feather的开发。该分支上修复的bug需要merge到develop,并在该分支完成时merge到master。此时需要给master打上tag,标记这个新的release。

Hotfix分支用于紧急bug修复,源自master,merge到develop和master。

对于已发布的产品,可能有意外的紧急bug需要修复。hotfix branch可以避免修复bug的工作影响develop branch。

创建hotfix branch:

# git checkout -b hotfix-x.y master

完成hotfix branch:

# git checkout master

# git merge --no-ff hotfix-x.y

# git tag –a x.y.z

# git checkout develop

# git merge --no-ff hotfix-x.y

# git branch –d hotfix-x.y

这里有个例外就是,如果hotfix发生时有正在进行的release branch,那么将hotfix merge到release,而release最终会merge到develop和master。

Git branch (分支学习)的更多相关文章

  1. Git入门指南十一:Git branch 分支与合并分支

    十五. Git branch 分支 查看当前有哪些branch bixiaopeng@bixiaopengtekiMacBook-Pro xmrobotium$ git branch * master ...

  2. Git branch 分支与合并分支

    Git branch 分支 查看当前有哪些branch bixiaopeng@bixiaopengtekiMacBook-Pro xmrobotium$ git branch * master 新建一 ...

  3. git branch 分支与合并

    在使用 git 进行分支开发与合并的时候需要用到这些命令.其他基本 git 命令参考 Git 简易食用指南 git branch 查看分支 git branch 查看当前分支情况 创建分支 git b ...

  4. git branch 分支和分支合并

    一般一个项目有一个默认的分支 master 主分支,然后可以有许多个分支,在别的分支上的操作不会影响到主分支.使用git branch查看当前多多少分支以及当前处于哪个分支上:执行git branch ...

  5. git branch分支管理用法总结

    查看分支(远程和本地) 1 查看本地分支: $ git branch 2 查看远程分支: $ git branch -r 3.查看本地和远程分支 $ git branch -a 创建分支 1.创建本地 ...

  6. git入门(3)git checkout 和git branch分支的创建和删除

    在一个项目中,需要多人同时开发,协同coding 要求: 开发时请用开发分支daily/0.0.1, 禁止直接使用master分支开发新建分支 git checkout -b daily/0.0.1 ...

  7. git branch 分支

    几乎所有的版本控制系统都以某种形式支持分支. 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线. 在很多版本控制系统中,这是一个略微低效的过程——常常需要完全创建一个源代码目录的副 ...

  8. git branch 分支操作

    一.git分支命令 Git鼓励大量使用分支: 查看分支:git branch 创建分支:git branch <name> 切换分支:git checkout <name> 创 ...

  9. git branch 分支管理

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

随机推荐

  1. global, $GLOBALS[]

    // global在函数中产生一个指向函数外部变量的别名变量,而不是真正的函数外部变量,一旦改变了别名的变量指向地址,就会发生一些意外的情况 $a = 10; function test() { gl ...

  2. CSS弹性盒模型 box-flex

    目前没有浏览器支持boc-flex属性. Firefox支持代替的-moz-box-flex属性 Safari.Opera以及Chrome支持替代的-webkit-box-flex属性 box-fle ...

  3. struts2处理.do后缀的请求

    默认情况下,struts2是无法处理以.do为后缀的请求url的(默认情况下是.action或者不填,可以参见org.apache.struts2包下的default.properties文件). 但 ...

  4. (转载)SQL中导入图片

    SQL中导入图片 分类: 论坛精贴 2006-05-10 12:07 398人阅读 评论(0) 收藏 举报 sqlimage服务器insertlogingo 1.建立过程CREATE PROCEDUR ...

  5. MVC-Razor引擎布局

    ViewBag.Title:标题 layout: @ViewBag.Title view: @{ViewBag.Title="标题"} @RenderBody():视图的内容直接渲 ...

  6. Mongodb使用总结

    学习Mongodb已经有半年多了,为啥学习它,工作需要啊.好了,废话不说,总结在实际项目应用中的几点问题. 学习总结 首先,mongodb基本上既照顾到了sql某些语法,又有nosql的许多优点.入门 ...

  7. Collection和Collections的区别

    Collection 是集合类的上级接口,继承它的接口主要有set和list.Collections 是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索,排序,线程安全化等操作.

  8. NetWorker常用术语

    术语 描述 active group 每24小时至少计划备份一次的备份组. Advanced File Type Device (AFTD) 为大容量磁盘设备和并发操作设计的磁盘备份设备配置选项. A ...

  9. 图片上没有line-height垂直居中

    <style> div {     width: 150px;     height: 155px;     line-height: 155px;     border: 1px sol ...

  10. JS获取IP、MAC和主机名的几种方法

    方法一(只针对IE且客户端的IE允许AcitiveX运行,通过平台:XP,SERVER03,2000): 获取客户端IP. <HTML> <HEAD> <TITLE> ...