Git 是 Linux 的创始人 Linus Torvalds 开发的开源和免费的版本管理系统,利用底层文件系统原理进行版本控制的工具。Git是目前为止最著名运用最好最受欢迎的分布式的配置管理工具。
早期的版本控制系统以svn为代表属于集中式版本库模式,每个chengxvyuan在本地有一个工作目录树,其内容是该版本库仲最新代码。当他们在工作目录树中完成代码修改后,把改动提交回版本库中。这类集中式版本控制系统的局限性在于,如果查询历史修改记录,必须与服务器上的版本库通信。
以git为代表的分布式版本控制系统,客户端不需要从一个单一的中央代码库同步代码,每个断电代码的拷贝都是真正的代码库。这种方式决定了分布式系统与集中式系统的优势在于:
1.由于不需要与中央服务器进行通信,因此一般的操作(如提交,查看历史和还原修改等)的执行速度非常快.只有在向其它端点push代码更改或者从其它端点pull代码更改的时候才会需要进行通信.
2.每一份代码拷贝都可以作为代码库及其更改历史的一份远程备份,这就为数据丢失提供了天然的保护.
鼓励测试性的branch - 创建或者销毁branch的操作简单而且快速.
Mercurial是与git类似的分布式版本管理系统。通常来讲,Git相比Mercurial在处理branching方面表现更好,尤其是用于试验和检查点的短期branch.

Git有一个被称为"staging area"的区域.在你向代码库提交之间, 你可以在这个中间区域中构建你的提交.更为重要的是,你可以只提交部分的修改,而不是将所有修改的文件都进行提交.你甚至可以只提交一个文件中修改的一部分.
使用git init 命令后,就会创建一个.git目录,git add 添加到staging area区域,
git commit 提交修改,
git branch RB1.0 master,在主分支上创建RB1.0的分支,
git check ***,切换不同分支。
git tag1.0 RB_1.0 为RB_1.0的分支打上1.0的标签。
git rebase,顾名思义,就是重新定义(re)起点(base)的作用,即重新定义分支的版本库状态。
假如现在我们的版本库如下:
master0(初始化后的版本)
||
master1===test0==>test1===>test2
||
master2===>master3
如果我要让test分支从test0到test2之间所有的改变都添加到master分支来,使得master分支包含test分支的所有修改。这个时候就要用到git rebase。
我们切换到master分支,然后运行下面的命令,即可实现我们的要求:
git rebase test
git reset 回退到某次提交后的为暂存状态
git diff 查看文件差异
git clone 创建远程版本库的本地拷贝,从一个远程叫做“origin”的主分支上,创建一个本地的分支,也跟踪远程的其他所有分支。
git pull 需要加入远程版本库名称和远程分支名。可以顺序完成两件事,取来,然后合并。
git fetch 和pull 类似,不过不会做任何合并。
git push 可以指定推入版本库推入。

gitflow
· git flow是一套管理基于git 的管理branch的模型流程,屏蔽了git的底层命令,向用户提供更高一级的命令用于源码的版本管理。它把branch分为两个主要分支,三个支援分支。
主要分支:
master:永远在production-ready状态。
develop:最新的下次发布开发状态。
支援分支:
feature branches:开发新功能从develop分支出来,完成后meger回去develop。
release branches:准备要release的版本,只修bugs。从debelop分支出来,完成后merge回master和develop。
hotfix branches:等不及release版本就bixv马上修复master赶上线。从master分支出来,完成后merge回master和develop。

在mac下命令行输入brew install git-flow安装。
使用git flow init 初始化。
初始化会自动生成上述的分支。
有任何开发,先开branch
git flow feature start feature1
完成后输入 git flow feature finish feature1 会自动合并回develop并删除这个branch
push 一个feature branch到远端
git flow feature publish feature1 或git push origin feature/feature1
追踪一个远端branch
git flow feature track feature1 或git checkout -b feature/feature1 -t origin/feature1
如果你在’追踪分支''(Tracking Branches)上执行推送(push)或拉取(pull)时, 它会自动推送(push)或拉取(pull)到关联的远程分支上.

github的使用原则是:
1.任何在master分支上的都是可以部署的。
2.开发任何新功能,要创建一个不在主干上的自己命名的分支。
3.当你需要反馈或者帮助,或者你觉得准备好可以融合到主干上,打开一个pull request。
4.当其他人都审核新代码之后,你可以把它融入master上。
5.一旦融合和推入到master上,你可以而且应该立即部署下来。

与gitflow类似的工作流或者版本管理工具还有
redmine 基于ROR的项目管理工具,需要插件
DOTProject 基于LAMP项目管理工具
phabricator 开源的code review+repository browser+bug tracker+wiki facebook开源出来
gerrit 成熟的代码review流程
youtrack 问题跟踪,bug跟踪
trakr 提供直观的工作流
上述都没有亲自对流程使用,并不能提供每个优劣比较。

github
GitHub 是一个用于使用Git版本控制系统的项目的基于互联网的存取服务。
GitHub可以托管各种git库,并提供一个web界面,但与其它像 SourceForge或Google Code这样的服务不同,GitHub的独特卖点在于从另外一个项目进行分支的简易性。为一个项目贡献代码非常简单︰首先点击项目站点的“fork”的按 钮,然後将代码检出并将修改加入到刚才分出的代码库中,最後通过内建的“pull request”机制向项目负责人申请代码合并。已经有人将GitHub称为代码玩家的Facebook。
在GitHub进行分支就像在Facebook进行交友一样,在社会关系图的节点中不断的连线。
开源项目可以免费托管,但私有版本库则并不如此。
githup的安装参见github的主页,需要安装git,本地生成公钥和私钥,打开本地生成的公钥,github网站上账号添加相应的公钥串。
类似的社区化代码托管网站bitbucket,相比很多功能类似,不过有一个免费的私人版本库的空间

gitbub感想的更多相关文章

  1. Building Modern Web Apps-构建现代的 Web 应用程序(一些感想)

    <iframe src="http://channel9.msdn.com/Series/MVA-China/Web20140611A01/player?h=540&w=960 ...

  2. 20155206赵飞技能获取经验,C语言学习感想与对JAVA的学习目标

    自己较强的技能获取经验. 1:实话实说我自己是没有哪个技能可以超过90%的人的,只有自认为做的还可以的一些事情,例如打篮球,office软件的应用,一百米跑.至于其他方面就是很平庸了. 2:经验主要有 ...

  3. C#注解属性的感想一:

    C#当中Attribute(中文注解属性)已经知道这个概念已经很久很久了,不过悲剧的是在实际项目当中重来没有用它来做过什么东西,以致对它的理解总是很浅薄,更谈不上如何在实际项目中运用它.最近在学习&l ...

  4. 完成Matrix丶Kingdom PPT后的感想

    这次Presentation是我在这节课的第一次上台演讲,让我感悟良多. 具体对我的PPT有兴趣的朋友可以call我,我会共享给大家. 这次老师布置的任务对我而言很有意义.首先,我作为最后一组,我欣赏 ...

  5. 记录在xx公司被考核的15天及自己的感想

    在大学有两件事让我很遗憾. 第一:在2013年7月我和自己的前任女朋友分手,这是两年前的事了,我们谈了七个月. 第二:在2015年4月我被xx公司淘汰了,正如我的前任女朋友是我遇到的最好女孩,这家公司 ...

  6. 在帝都的Android面试感想

    #第一次面试赤子城Android开发实习生 关于面试的表现和感想 1.没有准备充分就去面试(这是大忌,也就直接决定了结果) 我去面试Android,但是却不知道很多关于Android的基础知识,就是明 ...

  7. <构建之法>3-5章感想

    提示:(下面的总结我会按照每章发现的问题,自己的回答,感想来陈述) 3章. 在阅读3.2.4职业成长-自我评估的时候,说到CRUD需要一些核心技术和许多控扩展的知识,那么作为软件工程的学生,在学校除了 ...

  8. spring1冲刺感想与总结

    感想与体会: 通过团队合作的第一个sprint,我们知道如何在团队合作中做好自己,还有与队友不合时,如何和平处理问题.产品负责人是一个重要的的角色,他负责任务的安排,处理合作中意见不统一的问题.通过这 ...

  9. NOIP2014感想

    NOIP2014转眼就结束了,让人不由感慨时间之快,仿佛几天前还是暑假,几天后就已经坐在考场里了. 从暑假8月开始写博客,发了一些解题报告什么的,但这篇文章不再会是“题目大意 & 解题过程 & ...

随机推荐

  1. Frameworks(不定时更新)

    iOS8.4 Frameworks 更新时间:2015年8月17日 Accelerate iOS4.0引入了Accelerate框架,该框架的接口可用于执行数学.大数字以及DSP运算.和开发者个人编写 ...

  2. Alpha版本 - 用户反馈

    Alpha版本 - 用户反馈 使用情况 (前天发出了内测apk给身边的人小范围使用,到目前共有31名用户使用过产品) 新增用户数: 用户事件数: Bug反馈 登录/注册出现"无响应" ...

  3. Java面试——微服务

    1.什么是微服务?    就目前而言,对于微服务业界并没有一个统一的,标准的定义. 但通常而言,微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分一组小的服务,每个服务运行在其独立 ...

  4. CF848C:Goodbye Souvenir(CDQ分治)

    Description 给定长度为$n$的数组, 定义数字$X$在$[l,r]$内的值为数字$X$在$[l,r]$内最后一次出现位置的下标减去第一次出现位置的下标给定$m$次询问, 每次询问有三个整数 ...

  5. Fermat vs. Pythagoras POJ - 1305 (数论之勾股数组(毕达哥拉斯三元组))

    题意:(a, b, c)为a2+b2=c2的一个解,那么求gcd(a, b, c)=1的组数,并且a<b<c<=n,和不为解中所含数字的个数,比如在n等于10时,为1, 2, 7,9 ...

  6. EM算法笔记

    EM算法在很多地方都用使用到,比如简单的K-means算法,还有在隐马尔可夫里面,也涉及到了EM算法,可见EM算法在机器学习领域的重要地位.在这里就写一下我对于EM算法的一些理解笔记.后续有新的理解也 ...

  7. Oracle 11g rac 添加新节点测试

    [转]https://blog.csdn.net/shiyu1157758655/article/details/60877076 前期准备: 操作系统设置OS版本必须相同,检查内核参数,系统内存.C ...

  8. MP实战系列(二)之集成swagger

    其实与spring+springmvc+mybatis集成swagger没什么区别,只是之前写的太不好了,所以这次决定详细写. 提到swagger不得不提rest,rest是一种架构风格,里面有对不同 ...

  9. Qt+QGis二次开发:打开S-57格式(*.000)电子海图数据,并设置多边形要素的显示风格

    不过多的废话了,直接上源码: addChartlayers()方法时“打开海图”按钮的triggered()信号所绑定的槽函数. //添加海图数据小按钮槽函数 void MainWindow::add ...

  10. Linux系统远程连接服务器命令行模式

    导读 对于很多新手来说,如何用Windows远程Linux操作系统,是个前进的大问题.如果这个问题前进不了,其他更别说了. Linux或Max OS X系统电脑,登录步骤为 1.打开ssh客户端 2. ...