`
thecloud
  • 浏览: 884123 次
文章分类
社区版块
存档分类
最新评论

Git版本控制--Git的初始设置和使用(一)

 
阅读更多

系统信息:Linux 3.4.36-gentoo

git版本:git version 1.8.2.1

原创作品,转载请标明出处:

http://blog.csdn.net/yming0221/article/details/8825160

很久之前就听说版本控制器,而Git是一款优秀的版本控制软件。因为没有多大的团队合作过什么项目,所以也没有好好学习使用。下面就学习下,方便以后自己对项目的管理。

如果你严肃对待编程,就必定会使用"版本管理系统"(Version Control System)。
眼下最流行的"版本管理系统",非Git莫属。



1.什么是Git?

源代码管理(SCM)系统不是什么新思想。为了编写一些能够更快速、简单地开发以后软件项目的软件,已经进行了很多尝试。最新的源代码解决方案都包含了版本控制系统,它可以对源代码的修改进行回滚,从而将有害的代码剔除出项目之外,或者简单地跟踪哪些人修改了代码的哪些行的内容。版本控制系统试图解决开发人员在试图同时对某个文件进行修改时所出现的冲突问题,可以防止用户覆盖其他人所作的修改。源代码管理使用的很多流行解决方案都试图解决以前 SCM 解决方案中的失效问题。


集中化的版本控制系统通常采用两种方式:
有些提供了文件锁来防止多个用户的并行访问。这些系统对文件进行加锁,这样在某个时间只有一个开发人员对中心仓库具有写入权限。
另外一些工具,例如 CVS,允许多个开发人员同时对相同的文件进行编辑,并提供了一些机制稍后合并这些修改。


流行的版本控制系统包括:

  • CVS
  • Subversion
  • Arch
  • Bazaar
  • BitKeeper

Git 是 Linus Torvalds 最近实现的源代码管理软件。正如所提供的文档中说的一样,“Git 是一个快速、可扩展的分布式版本控制系统,它具有极为丰富的命令集,对内部系统提供了高级操作和完全访问。”

Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper,后者之前一直是 Linux 内核开发人员在全球使用的主要源代码工具。开放源码社区中的有些人觉得 BitKeeper 的许可证并不适合开放源码社区的工作,因此 Torvalds 决定着手研究许可证更为灵活的版本控制系统。尽管最初 Git 的开发是为了辅助 Linux 内核开发的过程,但是我们已经发现在很多其他自由软件项目中也使用了 Git。例如,X.org 最近就迁移到 Git 上来了,很多 Freedesktop.org 的项目也迁移到了 Git 上。

Git 目前主要由寻找 CVS 或专有代码管理解决方案替代物的软件开发人员所使用。Git 与 CVS 有很多区别:
  • 分支更快、更容易。
  • 支持离线工作;本地提交可以稍后提交到服务器上。
  • Git 提交都是原子的,且是整个项目范围的,而不像 CVS 中一样是对每个文件的。
  • Git 中的每个工作树都包含一个具有完整项目历史的仓库。
  • 没有哪一个 Git 仓库会天生比其他仓库更重要。

2. 软件的安装

Linux下安装git不是什么问题,比如我的机器(Gentoo Linux),直接命令
emerge -av git
即可完成git及其依赖的编译和安装。

3. 软件的基本使用

安装完成后先进行基本的设置
git config --global user.name "Your Name"
git config --global user.email "youremail@domain.com"
切换到工程目录,执行
git init
进行初始化工作


使用命令
git status
查看git的状态

使用命令

git add <file> 添加某个文件
git add . 添加目录下的所有文件

使用命令

git commit -m "your commitment"
进行向版本库提交


通过使用命令

git log
查看提交的日志记录


下面修改下目录中test1.cpp文件,添加一行,删除两行

然后执行git status查看状态:


添加并提交修改:



4. Git中分支(Branch)的使用

首先,代码库应该有一个、且仅有一个主分支。所有提供给用户使用的正式版本,都在这个主分支上发布。

Git主分支的名字,默认叫做Master。它是自动建立的,版本库初始化以后,默认就是在主分支在进行开发。


创建分支:

主分支只用来分布重大版本,日常开发应该在另一条分支上完成。我们不妨把开发用的分支,叫做Develop。

这个分支可以用来生成代码的最新隔夜版本(nightly)。如果想正式对外发布,就在Master分支上,对Develop分支进行"合并"(merge)。


下面是几个有关分支的命令:

git checkout -b develop master #创建develop分支
git checkout master #切换分支到master
git merge --no-ff develop #对develop进行分支合并
默认情况下,Git执行"快进式合并"(fast-farward merge),会直接将Master分支指向Develop分支。使用--no-ff参数后,会执行正常合并,在Master分支上生成一个新节点。为了保证版本演进的清晰,我们希望采用这种做法。


5. 其他类型的几种分支

前面讲到版本库的两条主要分支:Master和Develop。前者用于正式发布,后者用于日常开发。其实,常设分支只需要这两条就够了,不需要其他了。
但是,除了常设分支以外,还有一些临时性分支,用于应对一些特定目的的版本开发。临时性分支主要有三种:

  •   功能(feature)分支
  •   预发布(release)分支
  •   修补bug(fixbug)分支

这三种分支都属于临时性需要,使用完以后,应该删除,使得代码库的常设分支始终只有Master和Develop。


5.1 功能分支

它是为了开发某种特定功能,从Develop分支上面分出来的。开发完成后,要再并入Develop。


5.2预发布分支

它是指发布正式版本之前(即合并到Master分支之前),我们可能需要有一个预发布的版本进行测试。

预发布分支是从Develop分支上面分出来的,预发布结束以后,必须合并进Develop和Master分支。它的命名,可以采用release-*的形式。


5.3 修补bug分支

软件正式发布以后,难免会出现bug。这时就需要创建一个分支,进行bug修补。
修补bug分支是从Master分支上面分出来的。修补结束以后,再合并进Master和Develop分支。它的命名,可以采用fixbug-*的形式。

分享到:
评论

相关推荐

    git版本控制命令大全txt

    git init # 初始化本地git仓库(创建新仓库) git config --global user.name "xxx" # 配置用户名 git config --global user.email "xxx@xxx.com" # 配置邮件 git config --global color.ui true # git...

    gitflow-semver-hooks:gitflow AVH 的语义版本控制钩子

    gitflow-semver-hooks gitflow 语义版本控制钩子它有什么作用? 开始发布或修补程序时自动更新版本。 自动指定标签消息。启用初始化 git-flow。 git flow init 它会问你一些问题,最后会是Hooks and filters ...

    Visual Studio Code 使用Git进行版本控制(图文教程)

    今天首次使用VS Code的Git功能,翻遍了 所有中文教程,竟没有一个靠谱的。遂动笔写一篇。 请确保你安装了最新的VS Code.http://code.visualstudio.com/ 请确保安装了最新版的Git。https://git-scm.com/download。git...

    Git常用的33个命令

    在本地初始化一个Git仓库:git init 从远程仓库克隆 :git clone [url] 本地仓库命令: git status:查看文件状态 git add [文件名]:将文件的修改加入暂存区 git reset [文件名]:将暂存区的文件取消暂存,或者切换...

    Git介绍与使用-培训专用课程PPT

    2、主要内容是Git的介绍、Git的特点、集中式和分布式版本控制系统的不同与优点、Git和GitHub以及GitLab的区别、Git的安装和配置、Git的工作流程、Git的工作原理、暂存区和工作区以及版本库的概念、开发场景中常用的...

    git-build-hook:一个maven插件,用于为项目中的工作人员管理客户端(本地)git配置。 包括但不限于设置git config,安装钩子,验证本地存储库

    Git Build Hook Maven插件一个Maven插件,用于添加配置,安装git钩子和初始化本地项目的git存储库。... 与Maven原型一起使用,以使用第一个版本初始化Git存储库。基本用法一个常见的用例是通过设置core.hooksPath配置

    git入门.txt

    配置git信息用户名和用户邮箱 git config --global user.name " " git config --global user.email " " 初始化 git init 将文件添加到库 git add -A 提交到库 git commit -m " " 初始化仓库位置 git remote add ...

    git常用指令

    在本地新建一个repo,进入一个项目目录,执行git init,会初始化一个repo,并在当前文件夹下创建一个.git文件夹. git默认拒绝了push操作,需要进行设置,修改.git/config添加如下代码: [receive] denyCurrentBranch...

    node-git-current-branch:使用Node.js获取当前的git分支名称

    使用Node.js获取当前的git分支名称 安装 npm install node-git-current-branch --save 用法 const getCurrentBranchName = require ( 'node-git-current-branch' ) ; getCurrentBranchName ( ) ; // branch name or ...

    git相关资料

    git init #初始化 在源码目录内生成一个.git的目录 2, 注册用户信息 git config --global user.name XXX 用户名 git config --global user.email XXX 用户邮箱 git config –list #查看用户信息 3, 向git库中添加...

    git代码上传流程文档

    在本地初始化一个Git仓库 git init 从远程仓库克隆 git clone https://gitee.com/xxx/xxx.git git add 将未跟踪的文件加入暂存区 git reset 将暂存区的文件取消暂存 git commit 将暂存区的文件修改提交到本地仓库 ...

    git本地库初始化-管理

    git本地库初始化_管理git本地库初始化_管理git本地库初始化_管理git本地库初始化_管理git本地库初始化_管理git本地库初始化_管理git本地库初始化_管理git本地库初始化_管理git本地库初始化_管理git本地库初始化_管理...

    03Git入门Git初始设定 git init

    03★Git入门★Git初始设定_git_init

    setup-git-for-windows-sdk:GitHub动作,用于初始化适用于Windows SDK的Git的各种样式

    为Windows SDK(或其子集)设置Git 使用此操作来初始化环境以开发用于Windows的Git。入门name : Build stuff in Git for Windows' SDKon : [push]jobs : build : runs-on : windows-latest steps : - uses : actions...

    git常用操作命令 pdf

    git init # 初始化本地git环境 git clone  &lt;#&gt; 克隆一份代码到本地 git config --globa user.name/user.email # 修改全局的用户名称/邮箱 git checkout -b xxx # 基于当前分支创建xxx分支并切换到xxx分支 ...

    git-annex-remote-pcloud:用于pcloud.com的git-annex远程

    git-annex-remote- 是使用进行存储的外部远程服务器。 主页: : 免责声明 git-annex-remote-pcloud仍处于试验阶段。 虽然暂时应该可靠,但是请保留您不想丢失的所有数据的其他副本。 对于因使用此软件而造成的...

    git学习笔记,入门指南以及常用git指令

    $git init(cd至需要用到的地址,文件夹,用git init初始化版本库) 2.克隆一个已经存在的版本库 $git clone git@github.com:SourireG/gitskills.git(clone github上的远程库gitskills.git至当前目录下) 二....

    浅析Git版本控制器使用

    本篇内容通过GitHub仓库创建过程以及创建连接后的上传与下载,详细介绍了Git版本控制器使用情况,来看下。 首先介绍一下什么是Git:git是目前最流行的版本控制系统,属于分布式版本控制器。 使用Git前先要在GitHub...

    git-flow:简单的git命令太有用了

    Git流 ...--global这个标志是为所有ypur项目配置的关键git config --global user.name "[your name]"使用它来设置您的名字git config --global user.email "[your email]"使用它来设置您的电子邮件

    Git_Comandos-Basicos:基本的git命令

    Git初始化 git添加。 Git重置。 Git提交 Git结帐-。 Git日志 Git提交-修改 git checkout -b分支英雄 Git Chekout大师 Git分支-d分支英雄 git推 git commit -am git状态 差异 Git克隆 newName Git配置--global ...

Global site tag (gtag.js) - Google Analytics