文档库 最新最全的文档下载
当前位置:文档库 › git详细教程

git详细教程

git详细教程
git详细教程

Contents

一、自述 (2)

二、白话概念 (3)

三、我使用的命令 (4)

四、Git的基本使用1—直接在主分支上操作,无需merge,无其他人修改主分支 (5)

五、Git基本使用2—重复上面的步骤 (8)

六、Git 的基本使用3:---新建工作分支,做改动,然后merge,模拟有人修改master,无冲突 10

七、Git的基本使用4:工作分支改动,然后merge,模拟改master,有冲突(同一文件同一行) (15)

八、Git 的基本使用5:工作分支改动,然后merge,模拟改master,有冲突(同一文件不同行) (18)

九、Git 的基本使用6:---谁动了我的master? (19)

十、现在你能分析整个过程吗? (22)

Doc name: 《git:菜鸟教菜鸟》

Author: Armand Wang

Date: July 30, 2013

E-mail: ww_zidongkong@https://www.wendangku.net/doc/a7996472.html,

Any advice rendered would be greatly appreciated. Thank you!

版本控制的最大好处就是让你永远可以后悔

----某大牛

一、自述

Git工具结束了‘小作坊’式的生产,我们不在使用copy来保存各个版本,特别是大工程协作开发时,这种方式也是不可行的。每一次commit产生的snapshot都可以迅速保存当前的版本状态,它使用了如此精妙的算法和数据结构可以像‘照照片’一样快速的记录细微或庞大的改动,你可以通过git log 展示的tag,回到任何一个你想回到版本。大家都在对master分支上的code进行修改,贡献自己的力量,人与人的想法不同,当修改了同一个地方的时候,就会有冲突。这样就需要你merge,你对?他对?或者都保留?这取决于你。恢复版本、分布控制(包括冲突解决)、分支方案,是我认为git的三大特色。

Git是个工具,我们不必要知道它的实现,也不必要了解太多概念,经过运用后形成的感性认识是最重要的,所以我决定写一些自己的直观感受和一己之见,绝非技术博客,倒可以是新手的入门文章,我不保证措辞标准,但是看下去,会用没问题。

我也是刚学git,只会一些简单的命令,但目前已经满足了我的工作需要,学习状态大致经历了三个阶段:

1,开始的时候完全不明白,只知道source code在远端,可以通过git clone down下来,可以通过git reset –hard 恢复最初的状态。

2,知道了git status/add/commit/push/pull等基本操作,可以糊里糊涂的push和pull。但是对于仓库,分支的概念很不清晰,也不会解决冲突。这一阶段多亏了实验室一个同学的帮助和github的教程。

3,相当于柳暗花明的阶段,是读了一篇博文,知道了add在干嘛,commit又是干嘛,最重要学习了一条指令,gitk –all,这是git 的GUI,上面的code line让我彻底明白了分支和commit的概念,当我使用git checkout 切换分支,发现仓库的内容竟然悄无声息的发生了改变。我瞬间明白了到底怎么回事。每个分支都有自己的成长记录(git log),我可以通过git checkout +ID回到该分支的任何历史状态,此时你打开本地的仓库文件夹,它呈现的就是你所切换到的分支,你所要求的状态。在GUI上一切都用code line的方式体现出来,我的我的小伙伴们简直都惊呆了。

首先,推荐一个代码的公共托管平台github,这是世界知名的以git为基础的编程服务中心,是很多程序员的最爱,你可以注册账号,就可以在上面建立server端的仓库,然后clone到本地,管理自己的代码。网址是:https://https://www.wendangku.net/doc/a7996472.html,/既然是公共平台,我也没有放置重要的代码在上面,所以我的账号可以给你们用。账户名称:armand-wang 密码是

weide_332020865.我已经新建了一个仓库,名字叫learngit,你们可以使用

git clone git@https://www.wendangku.net/doc/a7996472.html,:armand-wang/learngit.git

把仓库clone到本地。

二、白话概念

仓库是工程代码(开发包)的容器,分支是仓库的‘代言人’,你所看到的仓库永远是它的其中的某个分支,分支可以看做版本!每个版本都有自己的code line,(可以看做成长记录,可以用git log查看)即每次commit之后都会生成一个快照,像拍照一样,形成一个版本号tag,也相当于做了一次备份,一步一个脚印…就这样,你的code line 在生长,你的分支(版本)在不断进化。神奇的是,你可以根据tag号,使用git checkout回到该版本的任意一个状态。比如:

这是gitk –all生成的本地仓库code line,每一次commit都会生成一个节点,我们可以看到,节点显示的信息就是git commit –m 后面字符串的内容,即提交的原因。图中所示:

①一开始只有master一个分支(软件版本),后来由于‘new branch add’的原因提交了第一次修改(即做了点成果,然后备份),再后来由于‘add zhangsheng’的原因,提交

了第二次修改,相当于我又备份了一次,继续往前走,继续开发,由于muhaha的原因,我提交了第三次修改,好玩,备份后,继续开发,一直修改到了woa后的版本。

②这是我新建了一个分支test,相当于克隆了一个自己,开始的时候完全一样,我切换到test分支,发现跟master分支的woa之后的版本是一样的,即在一个分支上新建分支属于继承关系(说白了就是拷贝),这样本地仓库就有了两个‘代言人’。你想看谁,就切换到谁。然

后我在test分支(版本)上做了‘fix1’修改,在主分支上做了‘fix2’修改,我现在想将两次

修改合并,即两个版本生成一个版本,master分支下使用git merge test,这样master分支就具有了两个版本的特性,当然如果两次修改了同一个文件,就要求你根据提示信息处理冲突。

③合并之后我对master做了一次名为fix的修改,然后push到了remote仓库的master分支上。在push之前所有的操作都是local的。然后对master做了一次fixhuhu修改。

④最后在test分支下,使用个git merge master.将test 分支merge到主分支上,这样test和master两个版本又回到了同一个节点。

上面的过程是一个典型的过程,但是我们一般不在主分支上做改动,我只是为了模拟其他人改动了主分支。我们新建一个分支如test分支,做自己的改动,最后回到主分支,pull下最新的代码(别人commit后push的)然后将自己的分支merge到主分支上,解决冲突后push到远端的master分支。

上图中,我在git log 或者gitk –all中都可以查看到每个节点的tag,即版本ID,我可以通过git checkout ID回到这个节点时的状态,git branch会提示你不在任何分支上。 Gitk –all 可以看到你所在的节点的颜色是与其他节点不同的。

三、我使用的命令

我现在所使用的都是一些比较简单又非常非常重要的命令,但能满足正常的push/pull等需求。后面我将对这些命令进行使用介绍,先熟悉一下:

git clone +repo地址即将仓库下载到本地,并置于git的监控(追踪)之下

git rest –hard 使仓库中的代码版本恢复到最近的一个节点。

Git branch 查看本地的分支情况及当前分支

Git branch + 新分支名称新建分支

Git checkout +分支名切换分支

Git status 查看当前状态,它的提示信息很有用

git add . 将所有的修改置于git的监控之下,提交之前必须要做的。

Git commit –m ‘info’提交一次修改,生成节点,在本地仓库做一次备份,必须填写info,

即修改的原因和细节。

Git pull 从远端获取更新

Git merge +分支分支合并,即将两个版本合并成一个版本。

git push (没有冲突后)将local版本push到远端。

Git branch –D +分支删除分支

Git checkout +ID 恢复到某个节点

Git log 查看当前分支的成长记录

Gitk –all 显示GUI,这里的code line在初学的时候特别有用。

要养成经常使用git status和gitk –all的习惯。新建分支命令到push命令,命令时依次用到,完成一次down代码,修改代码,上传代码的过程。出现冲突后,根据提示打开冲突文件会有下面的画面:

两行箭头之间用=好隔开两部分,我们选择其一或者都留下,记得一定要删除这些提示符,只保存内容。依次解决冲突之后,我们再次执行git add .和git commit。就完成了合并。这是会在code line上生成一个节点,也能很明显看到这个节点时分支合并的汇聚点。

四、Git的基本使用1—直接在主分支上操作,无需merge,无其他人修改主分支

在阐述之前,清理一下本地仓库,删除除master之外的所有分支,清理master版本的

文件内容,以备后续的教程。趁这个机会,第一次演示基本步骤使用git branch发现有两个分支,删除test1

如图所示,仓库中有两个文件,test.txt和cat.txt,文件内容被我修改到了如图所示。

使用git status之后发现:文件被修改的提示。而且提示我们把修改添加到提交内容

我们使用git add .使被修改的文件由unstage状态转到stage状态,你可以想象成是把这些修改放到了工作台上,准备提交了。

下面我们提交一次修改,并将修改的原因写为begin study,如下:

我们利用gitk –all查看codeline

我们发现,master所在的节点,最新的commit是begin study.这个节点是我们学习的开始。这时我们git status一下:

这时显示提交过两个备份,即code line中显示的data和begin study两次提交。既然到这一步我们不妨将此时的master push到远端。在push之前我们先pull一下,看有没有人修改过master的代码,如果有修改过就牵涉到合并、解决冲突的问题,如果没有修改过就万事大吉。当然除了我,目前还没有人操作我的仓库。所以:

即显示没有更新。此时我们可以push了。

我一般都是使用git push,不加参数,它会直接push到默认的仓库分支。To

git@https://www.wendangku.net/doc/a7996472.html,:armand-wang/learngit.git

我们登录到github上查看push的结果:

即文档已经正确上传到了远端仓库。现在的code line如下:

五、Git基本使用2—重复上面的步骤

上面的步骤,是在master分支直接操作,push之前,无需merge,而且没有别的人修改主分支。为了强调这个步骤的重要性,我将再次重复这个过程,在主分支上修改test.txt。

Git status

Git add . && git commit –m ‘I modify master’

修改已经提交了,我们通过git log可以查看日志

通过gitk –all 可以看到code line 上也显示了此次提交形成的节点

此时我们将这个修改提交到remote(因为我确信没有人修改过主分支,所以省去了pull) Git push

我们查看github,已经成功修改。

Gitk –all,也显示了这次的push

六、Git 的基本使用3:---新建工作分支,做改动,然后merge,模拟有人修改master,无冲突现在,我们已经知道了基本的步骤,下面我们练习添加工作分支,在工作分支做修改,然后与主分支合并(merge),先不涉及有冲突的情况。我们首先在master上新建工作分支work,建成之后work与master是继承关系(拷贝)所以它们在同一个节点(版本)。

Git branch work然后切换到这个分支。

Gitk –all,我们可以看到work与master的关系。

在work 分支下,我们修改cat.text文件,在其中添加一样:cat is lovely

重复之前的步骤提交这个修改,原因是cat is lovely,Git status/git add ./git commit –m ‘cat is lovely’最后查看work分支的log和仓库的code line如下:

下面我们在模拟有人修改了master分支。在主分支增添了mouse.txt文件

先切换到主分支,再添加mouse.txt文件,内容为,hello, I am mouse

然后提交这次修改,修改的信息时 add mouse,最后查看主分支的log和仓库code line

记住我们模拟的情形是,work是工作分支,在我们工作的时候master被以add mouse的原因修改了。而且已经被我们从远端的master分支上pull下来了。我们要将cat is lovely的修改也提

交到远端的主分支上去。我们用的是git merge命令。首先切换到主分支,让主分支去merge work让它拥有所有的feature

Git merge work,因为没有修改同一个文件所以merge过程中没有出现冲突,很顺利

此时我们再查看master的log

此时的code line,出现了交汇,生成了汇聚节点

此时master分支拥有了我和别人所赋予的所有最新特性可以push了

Git push

查看remote 即github,修改已经成功上传

Gitk –all 上面也记录了此次push的信息

看这个code line,因为是一步一步看过来的,所以分析起来也容易,在‘I modify master’之后的版本,生出了work分支,然后master ‘add mouse’,work 添加了‘cat is lovely’,然后主分支merge了work,然后push到了远端。

为了让工作分支也保持最新的特性,我们切换到工作分支,让工作分支merge主分支,是他们再次站到同一个节点上。

此时的code line变得如我们所料

七、Git的基本使用4:工作分支改动,然后merge,模拟改master,有冲突(同一文件同一行)我们计划在work分支中的cat.txt最后一行添加‘work I win ’,commit信息也提交这一句。在master分支中在cat.txt的最后一行添加‘master I win’,commit信息也提交这一句,修改主分支同样是模拟其他程序员修改了远端主分支,我们push之前pull下来到本地主分支。这两步都做完后,code line 如下:

我们修改了同一个文件的同一行,我想work分支merge到主分支上是会出现冲突:

我们此时查看cat.txt时,情况如下:

它显示了两个分支在这个地方的不同,我们选择其一,或者两个都保留,我们选择两个都保留,一定要记得删除所有的提示符。

此时我们再次git add.

Git commit不加任何参数,出现下面的画面,直接:wq退出,merge成功

此时我们查看code line

这个开始看起来十分复杂的code line你心里心里也很清楚每一步是怎么来的了吧?

下面可以push了

查看远端仓库中的cat.txt修改成功

同样,为了保持work分支中也拥有最新的特性,我在work分支中将master分支也merge进来,最后的code line你心中有数了吗?

如下:

八、Git 的基本使用5:工作分支改动,然后merge,模拟改master,有冲突(同一文件不同行)经过前面的几个基本使用方法,我们看到工作分支与主分支修改的不是同一文件时,merge过程中不会出现冲突,但是如果修改了同一文件的同一行,就会出现冲突,那么如果修改同一文件的

不同行呢?会不会有冲突?答案我也不知道,下面就一起试试吧。

在work分支中修改cat的第一行hello! i am cat后面追加三个感叹号。commit info 是add three !

在master分支中,修改cat的最后一行work i win,删去I https://www.wendangku.net/doc/a7996472.html,mit信息时del I win

分别提交修改后code line 变成了

此时切换到主分支下去merge work分支看会不会出冲突?

我们看到git已经自动将两个不同的cat.txt merge完毕,不能不服啊!!

下面我将push主分支,push之后查看github上的远端仓库,发现push成功:

此时的code line已经变成了:

九、Git 的基本使用6:---谁动了我的master?

前面的步骤我们一直都是模拟master被修改了,然后pull下来的过程。但是真实情况下,没有人会自己修改master。其实我们可以在github的仓库里直接修改主分支,然后本地merge的时候会出现冲突。

我在work分支中添加mouse.txt最后一行‘work modify this file’提交这个修改。

然后在远端仓库,edit mouse.txt,最后一行,‘remote modify this file’并保存。

在work分支中做了修改之后,code line 如下:

在远端仓库修改:

这是切换到主分支,pull下最新的代码

此时我们查看主分支的git log,第一条显示:

这是我们查看主分支上mouse.txt的内容:我们发现内容已经是远端修改过的了。

Git使用教程

Git使用教程 原文出处:涂根华的博客 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统。 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。 Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是 一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。 三:在windows上如何安装Git? msysgit是 windows版的Git,如下: 需要从网上下载一个,然后进行默认安装即可。安装完成后,在开始菜单里面找 到“Git –> Git Bash”,如下: 会弹出一个类似的命令窗口的东西,就说明Git安装成功。如下:

安装完成后,还需要最后一步设置,在命令行输入如下: 因为Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识。 注意:git config –global 参数,有了这个参数,表示你这台机器上所有的Git 仓库都会使用这个配置,当然你也可以对某个仓库指定的不同的用户名和邮箱。四:如何操作? 一:创建版本库。

Git+使用教程

Git 中文教程 介绍 Git --- The stupid content tracker, 傻瓜内容跟踪器。Linus 是这样给我们介绍 Git 的。 Git 是用于 Linux 内核开发的版本控制工具。与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。 Git 的速度很快,这对于诸如Linux kernel 这样的大项目来说自然很重要。 Git 最为出色的是它的合并跟踪(merge tracing)能力。 实际上内核开发团队决定开始开发和使用 Git 来作为内核开发的版本控制系统的时候,世界开源社群的反对声音不少,最大的理由是 Git 太艰涩难懂,从 Git 的内部工作机制来说,的确是这样。但是随着开发的深入,Git 的正常使用都由一些友好的脚本命令来执行,使 Git 变得非常好用,即使是用来管理我们自己的开发项目,Git 都是一个友好,有力的工具。现在,越来越多的著名项目采用 Git 来管理项目开发,例如:wine, U-boot 等,详情看https://www.wendangku.net/doc/a7996472.html,/git 作为开源自由原教旨主义项目,Git 没有对版本库的浏览和修改做任何的权限限制。它只适用于 Linux / Unix 平台,没有 Windows 版本,目前也没有这样的开发计划。 本文将以 Git 官方文档Tutorial,core-tutorial和Everyday GIT作为蓝本翻译整理,但是暂时去掉了对 Git 内部工作机制的阐述,力求简明扼要,并加入了作者使用 Git 的过程中的一些心得体会,注意事项,以及更多的例子。建议你最好通过你所使用的 Unix / Linux 发行版的安装包来安装 Git, 你可以在线浏览本文,也可以通过下面的命令来得到本文最新的版本库,并且通过后面的学习用 Git 作为工具参加到本文的创作中来。 $ git-clone https://www.wendangku.net/doc/a7996472.html,/git/gittutorcn.git 创建一个版本库:git-init-db 创建一个 Git 版本库是很容易的,只要用命令git-init-db就可以了。现在我们来为本文的写作创建一个版本库: $ mkdir gittutorcn $ cd gittutorcn $ git-init-db git 将会作出以下的回应 defaulting to local storage area 这样,一个空的版本库就创建好了,并在当前目录中创建一个叫 .git 的子目录。你可以用 ls -a 查看一下,并请注意其中的三项内容: ● 一个叫 HEAD 的文件,我们现在来查看一下它的内容:

github使用教程

1、什么是GIT Git是一个强调速度的分布式版本控制软件和源代码管理系统(SCM, source code management)。Git最初是由Linus Torvalds为内核开发而设计的管理软件。自从Git推出以来,已经被很多开源项目所采纳。每一个Git工作目录是一个带有完全历史记录和版本信息的仓库,不依赖于网络和中央服务器。Git是一个免费的开源软件,遵从GNU v2协议。 Git这个词在英语中的原意是很笨拙,没用的人。Linus自嘲说:“我是一个任性的笨蛋,所以我把我的所有的项目的名字都和我很相似。第一个是Linux,现在是Git。”Git的帮助文档中描述Git为:笨拙的内容跟踪者(the stupid content tracker)。(翻译自WIKI) 关于开发Git的一些历史由来,可以看看这个网站:https://https://www.wendangku.net/doc/a7996472.html,/lkml/2005/4/6/121 2、为什么要用GIT ?更顺畅的工作流程,开发过程中,完全可以离线操作 ?快速,Git分布式架构使得本地仓库包含所有的历史版本信息,你可以在不同的版本之间快速切换 ?弹性的本地分支,在svn下,你建一个分支需要把源代码复制到另外一个文件夹,而在Git下,创建分支的代价是非常小的,只需一条命令 ?仓库目录结构简洁,用Git复制一个项目,只会在项目根目录创建一个.git的目录,而其他目录很干净 ?内容按元数据方式存储,所有的版本信息都位于.git目录下 ?完整性好,更易于协作开发 ?用户群大,现在已经有成千上万个开源项目采用Git来做项目管理,github上更是有无数个代码仓库 3、GIT安装与配置 a) 安装 1.从源码安装 在安装之前,你必须保证以下几个依赖包已经安装在你的系统上: curl, zlib, openssl, expat, libiconv。如果你的系统是Ubuntu,你可以这样安装: apt-get install curl-devel expat-devel gettext-devel openssl-devel zlib-devel 当所有的依赖项已经解决,就可以从https://www.wendangku.net/doc/a7996472.html,/download上下载Git的源码,然后编译安装,具体命令如下: tar -zxf git-1.*.*.*.tar.gz cd git-1.*.* make prefix=/usr/local all sudo make prefix=/usr/local install

git简单入门教程

安装完成后,在命令行输入: $ git config --global https://www.wendangku.net/doc/a7996472.html, "Your Name" $ git config --global user.email "email@https://www.wendangku.net/doc/a7996472.html," 选择一个合适的地方,创建一个空目录: $ mkdir learngit $ cd learngit $ pwd /Users/michael/learngit 通过git init命令把这个目录变成Git可以管理的仓库: $ git init Initialized empty Git repository in /Users/michael/learngit/.git/ 编写一个readme.txt文件,一定要放到learngit目录下(子目录也行), 因为这是一个Git仓库,放到其他地方Git再厉害也找不到这个文件。内容如下: Git is a version control system. Git is free software. 修改的过程 第一步,用命令git add告诉Git,把文件添加到仓库://可以一次添加多个文件,然后分一次提交就行了 $ git add readme.txt 第二步,用命令git commit告诉Git,把文件提交到仓库: $ git commit -m "wrote a readme file" [master (root-commit) cb926e7] wrote a readme file 1 file changed, 2 insertions(+) create mode 100644 readme.txt git status 命令可以让我们时刻掌握仓库当前的状态 git diff 能看看具体修改了什么内容 git log命令显示从最近到最远的提交日志 如果嫌输出信息太多,看得眼花缭乱的, 可以试试加上--pretty=oneline $ git log --pretty=oneline

Git版本控制的安装使用指南

1. 概述 Git是基于Linux内核开发的分布式版本控制/软件配置管理软件,与CVS、Subversion 等集中式版本控制软件不同,Git采用分布式管理,不需要服务器端软件即可运行。Git速度很快,并且具有很出色的合并追踪能力。很多有名的软件开发都使用Git来进行版本控制,其中有Linux内核、https://www.wendangku.net/doc/a7996472.html,服务器和OLPC内核开发等。 作为开源软件的代表,Git不对版本库的浏览和修改作任何的权限限制,因此只能采用其他工具实现权限管理,如gitosis、gitolite、CodeBeamer MR。 原本Git的使用只限于Linux/Unix,由于Cygwin、msysgit、TortoiseGit等GUI工具的出现,在Windows平台的使用逐渐成熟。 2. Git安装 2.1 安装Git 安装Git作为客户端,运行客户端可通过Git Bash(Git的命令行)或Git GUI操作。Windows下使用Git-1.7.8-preview20111206.exe,安装要点如下:

上述图片所示选项,似乎也不确定,网上帖子安装教程各种选项都有。安装完后,点击桌面Git Bash启动,执行命令pwd查看默认进入的文件目录,执行下面命令:mkdir .ssh (注意文件名前有.),即在默认目录下建立.ssh文件夹。修改环境变量,桌面右击我的电脑, 在属性中选择高级选项,左击环境变量,在系统变量中选择新建或编辑

下面列出一些问题的解决方法: a. Git Bash中ls不能显示中文目录(可直接打开编辑):在 git/etc/git-completion.bash中增加一行: alias ls='ls --show-control-chars --color=auto',注意引号为中文单引号,重启Git Bash b. Git commit不能提交中文注释:修改git/etc/inputrc中对应的行: set output-meta on set convert-meta off c. git log无法显示中文注释,在git/etc/profile中增加一行: export LESSCHARSET=iso8859 安装完后,需要在Git Bash中注册本人信息: git config --global https://www.wendangku.net/doc/a7996472.html, Your Name git config --global user.email your@email.address 在服务端,即Ubuntu,安装Git: sudo apt-get install git-core git-doc 3. Gitolite安装

GIT使用入门详细教程

GIT使用入门 Part 1 第一章基本原理 git是一个版本控制系统。官方的解释是:版本控制(Revision control)是一种软 件工程技巧,籍以在开发的过程中,确保由不同人所编辑的同一档案都得到更新。按我的白话文解释就是:一群志同道合的人身处祖国各地,希望来合作开发一个 项目,假设这个项目是使用c语言写的(当然用任何语言都可以的)。那么大家怎么合作呢?用信件?效率太低。用邮件,不好实现多人沟通。用google group吧,可开发阶段中的源代码没法科学管理。用自建的网站吧,需要人力物 力财力来支撑阿。 这个时候版本控制系统就派上用场了。它可以让一个团队里的不同的人在不同地点、不同时间开发和改进同一个项目,并且在大部分的时间里,版本控制系统会聪明的帮你把不同的人在不同地点不同时间修改的代码融合到项目中去。(当然在一些特殊的情况,还是需要人去决定到底哪些代码需要加入到项目中,这个在后面讨论不迟,先让大家对版本控制有一个好印象,呵呵) 知道了版本控制系统的优点之后,下面就要具体实践和体验了。建议你选用的版本控制系统包括: rcs,cvs,svn,git,Mercurial,Bazzar等等。 当然git,Mercurial和Bazzar都是属于分布式版本控制系统。 下面是一些网友对于这些版本控制系统评论的只言片语: 1)svk配合svn可以实现分布式的版本控制。 2) 我是从SVN转到Git下的。我想Git的优势是速度飞快,谁用谁知道! 3) git的确是最快的,bzr慢的要死 4) SVN 在windows 下有TortoiseSVN 5) git 有Windows 版本,在google code 上的项目。https://www.wendangku.net/doc/a7996472.html,/p/msysgit/ 6) 大家可以试试国内提供的git服务。https://www.wendangku.net/doc/a7996472.html, 那么,简单地说,Git 究竟是怎样的一个系统呢?请注意,接下来的内容非常重要,若是理解了Git 的思想和基本的工作原理,用起来就会知其所以然,游刃

TortoiseGit使用教程详解

TortoiseGit入门教程--参考资料:TortoiseGit帮助文档

目录 1、关于版本控制 (3) 2、TortoiseGit安装: (3) 2、TortoiseGit文件夹图标说明: (9) 3、克隆远程库 (10) 4、对文件进行修改 (13) 5、提交更改。 (14) 6、push推送变更到库 (18) 7、从远程库更新 (19) 8、与远程库同步 (20) 9、解决冲突 (24) 10、TortoiseGitMegar (28) 11、查看本地文件与基础文件的差异 (31) 12、查看别人的修改 (37) 13、查看文件的所有修改者 (40) 14、导出某一版本的文件 (41) 15、慎用Clean Up (44) 16、.gitignore和不需提交的文件 (45) 17、附:删除windows凭据 (46)

1、关于版本控制 版本控制是管理信息修改的艺术,它一直是程序员最重要的工具,程序员经常会花时间作出小的修改,然后又在某一天取消了这些修改,想象一下一个开发者并行工作的团队 - 或许是同时工作在同一个文件!- 你就会明白为什么一个好的系统需要管理潜在的混乱。这是来自TortoiseSVN文档的一段话,总结得很精辟。 TortoiseGit 是一个 Windows 下的版本控制系统Git的客户端工具,正如其名字一样,小乌龟外面有一个壳,TortoiseGit也只是Git一个壳,使您更加方便的使用Git。Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。版本库就像一个常见的文件服务器,除了它保存你对文件和目录所有的改变。这一特性使得你可以恢复文件的旧版本并查看历史-谁在什么时间如何进行的修改。因此也可以说版本控制系统是一种“时间机器”。 TortoiseGit现在有多语言包可以下载,本文档使用英文版进行说明。 本文档是以个人经验参考官方文档整理出来的,可能会存在很多问题,如有理解不正确的地方希望能够指出,大家共同学习吧。2、TortoiseGit安装: 首先安装git for windows,下载地址:https://git-for-windows.github.io/

GitLab在windows用户端的安装使用详细教程_8877179

代码管理工具GitLab 可视化界面在 windows 安装教程 --作者:Able 1.Windows下TortoiseGit over Putty or Openssh提交项目到GitLab(可视化工具):(安装教程按照1进行) 具体安装教程: Windows下TortoiseGit over Putty or Openssh提交项目到GitLab Gitlab默认的配置推荐使用shell命令行与server端进行交互,作为搞SCM的表示无压力,但是作为开发人员还是比较适应windows的GUI图形管理,方便他们将注意力集中到代码编写上,所以今天刚好接着昨天给大家介绍一下使用windows下的git client工具实现将本地代码提交到远程服务器. 解决方案: 环境部署 操作系统Windows7 x64 Sp1 TortoiseGit TortoiseGit-1.8.11.0-64bit.msi Git Git-1.9.4-preview20140815.exe Putty PuTTY 0.63 OpenSSH owned by Git 下载地址: https://www.wendangku.net/doc/a7996472.html,/QaaLGsd23BsWL(访问密码96d7) 注: 此处下载地址中的安装包都为64位版本,32位请另行下载. 一.部署前的准备工作 安装TortoiseGit,Git,Putty,默认下一步安装即可,其中Git为Git client环境安装包,确保w indows包含git环境. 二.配置PuTTY authentication agent 在安装TortoiseGit后,可以选择使用OpenSSH客户端还是使用Putty客户端,如果使用的是默认的Putty客户端,由于TortoiseGit GUI连接不支持server端自定义端口配置,若GitLab 使用的SSH端口为自定义端口,则需要使用PuTTY的authentication agent去做一个本地的端口转发. 1.首先使用TortoiseGit自带的Puttygen创建本地的公/私钥对

TortoiseGit使用入门教程

TortoiseGit入门教程 --参考资料:TortoiseGit帮助文档 边城浪子 二O一七年元月二十日 目录 1、关于版本控制 .................................................... 错误!未定义书签。 2、TortoiseGit安装:.......................................... 错误!未定义书签。 2、TortoiseGit文件夹图标说明: ...................... 错误!未定义书签。 3、克隆远程库 ........................................................ 错误!未定义书签。 4、对文件进行修改 ................................................ 错误!未定义书签。 5、提交更改。 ........................................................ 错误!未定义书签。 6、push推送变更到库............................................ 错误!未定义书签。 7、从远程库更新 .................................................... 错误!未定义书签。 8、与远程库同步 .................................................... 错误!未定义书签。 9、解决冲突 ............................................................ 错误!未定义书签。 10、TortoiseGitMegar........................................... 错误!未定义书签。 11、查看本地文件与基础文件的差异 ................... 错误!未定义书签。 12、查看别人的修改............................................... 错误!未定义书签。 13、查看文件的所有修改者................................... 错误!未定义书签。 14、导出某一版本的文件....................................... 错误!未定义书签。 15、慎用Clean Up ................................................. 错误!未定义书签。

Git菜鸟学习教程

Git菜鸟教程 作为一个Git的新手。写这份教程也是我自己学习和摸索git的过程,其中基于Git进行合作开发的模式参考了CVS,应该是很初级的合作模式。但是当前自己也只能做到这一步了。教程所述都是自己通过试验验证的。至少可以满足公司基本的合作开发。教程写完后,谢欣说可以放到blog与大家共享。我觉得是个不错的主意。一方面我觉得这个文档应该可以给git 的新手一些帮助,另一方面也欢迎git的大牛指点。这里要感谢《Git中文教程》的作者。还有概述中关于git的优点描述拷贝了网络上某位大牛的原话,但是拷贝的出处也是转载的,就在这里谢谢那位我不知名大牛了。 下面就开始了。 1.概述 对于软件版本管理工具,酷讯决定摒弃CVS而转向Git了。 为什么要选择Git?你真正学会使用Git时,你就会觉得这个问题的回答是非常自然的。然而当真正需要用文字来回答时,却觉得文字好像不是那么够用。咳,该则么回答呢? 其实,关键的问题不在于如何回答这个问题。问题的关键是公司已经决定使用它了。那么,我们的程序员们!请开动你们的浏览器,请拿出你的搜索引擎工具,去自己发掘答案吧。在这里,我只能给你们一个最朦胧的感觉。 Git和CVS、SVN不同,是一个分布式的源代码管理工具。Linux内核的代码就是用Git 管理的。它很强,也很快。它给我们带来的直接好处有: 1.傻瓜都会的初始化,git init,git commit-a,就完了。对于随便写两行代码就要放到代码管理工具里的人来说,再合适不过。也可以拿git做备份系统,或者同步两台机器的文档,都很方便。 2.绝大部分操作在本地完成,不用和集中的代码管理服务器交互,终于可以随时随地大胆地check in代码了。只有最终完成的版本才需要向一个中心的集中的代码管理服务器提交。 3.每次提交都会对所有代码创建一个唯一的commit id。不像CVS那样都是对单个文件分别进行版本的更改。所以你可以一次性将某次提交前的所有代码check出来,而不用考虑到底提交过那些文件。(其实SVN也可以做到这点) 4.branch管理容易多了,无论是建立新的branch,还是在branch之间切换都一条命令完成,不需要建立多余的目录。 5.branch之间merge时,不仅代码会merge在一起,check in历史也会保留,这点非常重要。 6.…太多了 当然,Git也会带给我们一些困难,首先,你想要使用好git,就要真正明白它的原理,理解它的观念,对以那些CVS的熟手来说,改变你已经固有的纯集中式源代码管理的观念尤为重要,同时也会让你觉得有些困难。在使用git的初期,你可能会觉得有些困难,但等你逐渐明白它时,你绝对会喜欢上它。这是一定的,就像我问你“喜欢一个温吞如水、毫无感觉的主妇,还是喜欢一个奔放如火,让你爱的痴狂恨的牙痒的情人”一样毋庸置疑。 下面,就让我们进入学习Git之旅… 请记住,这只是一个非常简单而且初级的教程,想要成为git的专家,需要各位同事不断的自己深入挖掘。 2.Git基础命令 2.1创建Git库—git-init

git安装和配置图文教程

Git的安装和配置步骤 1.运行GitExtensions241SetupComplete.msi,在出现的对话框中点击run 2.进入欢迎页面单击next 3.进入Installation Scope界面选择Install for all users of this machine单击next

4.进入Required Software界面,勾选Install MsysGit和Install KDiff,单击next 5.进入选择安装目录界面,按默认路径,单击next 6.进入Custom Setup界面,按默认设置,单击next

7.进入Select SSH Clinet界面,选择OpenSSH,单击next 8.开始安装,单击Install 9.KDiff3安装,进入许可证协议界面,单击‘我接受’

10.进入选择组件页面,按默认设置,单击下一步 11.选择安装路径,按默认设置,单击下一步 12.勾选Install for all users,单击下一步

13.是否创建开始菜单中的快捷方式,勾选不要创建快捷方式,单击安装 14.完成安装向导,单击完成 15.进入Git Setup Wizard界面,单击next

16.进入Select Components界面,按默认设置,单击next 17.进入Adjusting your PATH environment选择Use Git Bash Only,单击next 18.进入Configuring the line ending conversions,按默认设置,单击next

Git-简单使用教程(个人独享版)

Windows下Git和Gitlab简单教程 ---jack杨俊伟在使用之前,因为大家之前用的都是SVN集中式的版本控制系统,而git是分布式的,但在使用和功能上差异没有特别大,这里需要先简单了解它们的差异。 1)最核心的区别Git是分布式的,而Svn不是分布的。Git跟Svn一样有自己的集中 式版本库和Server端,但Git更倾向于分布式开发,因为每一个开发人员的电脑上都有一个Local Repository,所以即使没有网络也一样可以Commit,查看历史版本记录,创建项目分支等操作,等网络再次连接上Push到Server端。 2)Git把内容按元数据方式存储,而SVN是按文件:因为,.git目录是处于你的机器上 的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。.git目录的体积大小跟.svn比较,你会发现它们差距很大。 3)Git没有一个全局版本号,而SVN有。Git的内容的完整性要优于SVN: GIT的内 容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。Git下载下来后,在OffLine状态下可以看到所有的Log,SVN不可以。 4)SVN必须先Update才能Commit,忘记了合并时就会出现一些错误,git还是比较 少的出现这种情况。 5)克隆一份全新的目录以同样拥有五个分支来说,SVN是同时复製5个版本的文件, 也就是说重复五次同样的动作。而Git只是获取文件的每个版本的元素 6)提交(Commit)在SVN,当你提交你的完成品时,它将直接记录到中央版本库。 当你发现你的完成品存在严重问题时,你已经无法阻止事情的发生了。如果网路中断,你根本没办法提交!而Git的提交完全属於本地版本库的活动。而你只需“推”

git详细教程

Contents 一、自述 (2) 二、白话概念 (3) 三、我使用的命令 (4) 四、Git的基本使用1—直接在主分支上操作,无需merge,无其他人修改主分支 (5) 五、Git基本使用2—重复上面的步骤 (8) 六、Git 的基本使用3:---新建工作分支,做改动,然后merge,模拟有人修改master,无冲突 10 七、Git的基本使用4:工作分支改动,然后merge,模拟改master,有冲突(同一文件同一行) (15) 八、Git 的基本使用5:工作分支改动,然后merge,模拟改master,有冲突(同一文件不同行) (18) 九、Git 的基本使用6:---谁动了我的master? (19) 十、现在你能分析整个过程吗? (22) Doc name: 《git:菜鸟教菜鸟》 Author: Armand Wang Date: July 30, 2013 E-mail: ww_zidongkong@https://www.wendangku.net/doc/a7996472.html, Any advice rendered would be greatly appreciated. Thank you!

版本控制的最大好处就是让你永远可以后悔 ----某大牛 一、自述 Git工具结束了‘小作坊’式的生产,我们不在使用copy来保存各个版本,特别是大工程协作开发时,这种方式也是不可行的。每一次commit产生的snapshot都可以迅速保存当前的版本状态,它使用了如此精妙的算法和数据结构可以像‘照照片’一样快速的记录细微或庞大的改动,你可以通过git log 展示的tag,回到任何一个你想回到版本。大家都在对master分支上的code进行修改,贡献自己的力量,人与人的想法不同,当修改了同一个地方的时候,就会有冲突。这样就需要你merge,你对?他对?或者都保留?这取决于你。恢复版本、分布控制(包括冲突解决)、分支方案,是我认为git的三大特色。 Git是个工具,我们不必要知道它的实现,也不必要了解太多概念,经过运用后形成的感性认识是最重要的,所以我决定写一些自己的直观感受和一己之见,绝非技术博客,倒可以是新手的入门文章,我不保证措辞标准,但是看下去,会用没问题。 我也是刚学git,只会一些简单的命令,但目前已经满足了我的工作需要,学习状态大致经历了三个阶段: 1,开始的时候完全不明白,只知道source code在远端,可以通过git clone down下来,可以通过git reset –hard 恢复最初的状态。 2,知道了git status/add/commit/push/pull等基本操作,可以糊里糊涂的push和pull。但是对于仓库,分支的概念很不清晰,也不会解决冲突。这一阶段多亏了实验室一个同学的帮助和github的教程。 3,相当于柳暗花明的阶段,是读了一篇博文,知道了add在干嘛,commit又是干嘛,最重要学习了一条指令,gitk –all,这是git 的GUI,上面的code line让我彻底明白了分支和commit的概念,当我使用git checkout 切换分支,发现仓库的内容竟然悄无声息的发生了改变。我瞬间明白了到底怎么回事。每个分支都有自己的成长记录(git log),我可以通过git checkout +ID回到该分支的任何历史状态,此时你打开本地的仓库文件夹,它呈现的就是你所切换到的分支,你所要求的状态。在GUI上一切都用code line的方式体现出来,我的我的小伙伴们简直都惊呆了。 首先,推荐一个代码的公共托管平台github,这是世界知名的以git为基础的编程服务中心,是很多程序员的最爱,你可以注册账号,就可以在上面建立server端的仓库,然后clone到本地,管理自己的代码。网址是:https://https://www.wendangku.net/doc/a7996472.html,/既然是公共平台,我也没有放置重要的代码在上面,所以我的账号可以给你们用。账户名称:armand-wang 密码是 weide_332020865.我已经新建了一个仓库,名字叫learngit,你们可以使用 git clone git@https://www.wendangku.net/doc/a7996472.html,:armand-wang/learngit.git 把仓库clone到本地。

git教程

教程:在CentOS 5上安装Git Git是Linus.Torvald为了管理Linux内核发起并开发的一个开源分布式版本控件系统,作为分布式版本控制系统的重要代表——Git已经为越来越多的人所认识,它不同于我们熟悉的CVS、SVN和同时分布式控制系统的Mercurial。既然现在都流行这个Git分布式版本控制系统,我也在服务器上装一个学一下。 首先安装Git依赖的一些包。 yum install zlib-devel yum install openssl-devel yum install perl yum install cpio yum install expat-devel yum install gettext-devel 接下来,如果你已经安装过Curl了,那么跳过这一步,没有的话,就装一下。(可以yum安装) wget http://curl.haxx.se/download/curl-7.18.0.tar.gz tar xzvf curl-7.18.0.tar.gz cd curl-7.18.0 ./configure make make install

确定一下ld.so.conf文件里有/usr/local/lib,这个是为git-http-push准备的。 vi /etc/ld.so.conf #插入下面的代码 /usr/local/lib 保存文件,接着运行: /sbin/ldconfig 最后,我们下载Git并安装它 wget https://www.wendangku.net/doc/a7996472.html,/projects/git-snapshots/git/git-latest.tar.gz tar xzvf git-latest.tar.gz cd git-{date}(这里的{date}指的是版本的时间) autoconf(如果终端提示no command的话就yum install autoconf,千万不要以为文件夹中有makefile就好直接make了,不然会出错的) ./configure --with-curl=/usr/local make make install 初识版本控制系统Git Git 是用于Linux 内核开发的版本控制工具。与常用的版本控制工具CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。本文是《Git Community Book》的译者刘辉在InfoQ上发表的一篇专栏文章,整个系列名为《Git历险记》。本文是系列第一篇,对Git的历史、特点和作者的使用心得进行了概述。以下为正文。 作为分布式版本控制系统的重要代表——Git已经为越来越多的人所认识,它相对于我们熟悉的CVS、SVN甚至同时分布式控制系统的Mercurial,有哪些优势和不足呢。Git是Linus.Torvald为了管理Linux内核发起并开发的一个开源分布式版本控件系统(DVCS)。从2002年起,Linux 内核一直使用BitKeeper来进行版本管理,但是在2005年BitKeeper和Linux 内核开源社区的合作关系结束,BitKeeper再也不能免费使用了,这迫使Linus决定开发一个开源界自已的版本控制系统。 传统的SVN、CVS 等版本控制系统,只有一个仓库(repository),用户必须要连上这个仓库才能开始提交;而Git之类的分布式版本控制系统(当然也还包括BitKeeper、Mercurial等等),它的每个工作目录都包含一个完整的仓库,它们可以支持离线工作,先把工作提交到本地仓库后再提交上远程的

Gitblit服务器搭建和git使用教程

Gitblit服务器搭建和git使用教程 1.大纲 目前做代码管理的主流是Git,GIthub付费才能不被开源,所以在小范围内或者小型开发团队可以使用Gitblit搭建自己的私人服务器。以下是教程: 需要的安装工具如下 2.安装JDK,配置JAVA环境 默认安装即可。 安装成功后找到安装路径,配置环境变量

右击计算机-->属性-->高级系统配置,点开后 环境变量下面的系统变量

新建 确定保存后CMD一下,输入JAVAC回车,如下图所示则环境配置成功

3.Gitblit服务器搭建 去官网https://www.wendangku.net/doc/a7996472.html,/下载最新的压缩包,并在Windows 上搭建 1)下载 2)解压到合适的目录下,如: 3)创建一个目录来存放代码库: E:/GitRepository 4)修改data目录下的gitblit.properties E:\Gitblit\gitblit-1.7.1\data \gitblit.properties 添加红色部分 # # GITBLIT.PROPERTIES # # Define your custom settings in this file and/or include settings defined in # other properties files. # # Include Gitblit's 'defaults.properties' within your configuration. # # NOTE: Gitblit will not automatically reload "included" properties. Gitblit # only watches the 'gitblit.properties' file for modifications. # # Paths may be relative to the ${baseFolder} or they may be absolute. # # COMMA-DELIMITED # SINCE 1.7.0 include = defaults.properties #

Git Gui教程

前言 之前一直想一篇这样的东西,因为最初接触时,我也认真看了廖雪峰的教程,但是似乎我觉得讲得有点多,而且还是会给我带来很多多余且重复的操作负担,所以我希望能压缩一下它在我工作中的成本,但是搜索了一下并没有找到满意的教程,新的一年自己梳理一下自己的经验。 可能男生们大神比较多,觉得Git是如此简单,便已觉得命令行操作就是SO EASY,甚至或许有看不起可视化这样面对低端用户的心理,好的,那您就当我是水货可以右上角了。我一直觉得类似GIT这样的东西,他对于我而言只是个不完全必须的工具,我并不想成为使用他的专家,类似的东西,今天有GIT,明天可能有GAT,或者GAY?所以快速地掌握它我需要的重要日常操作,最好是10分钟,那就好了,如果你有类似的想法,好吧,那不要废话了,咱们赶紧开始。 (全文限windows系统。) 何为GIT? 安装GIT,大致了解下GIT是做某子的。 权限校验 首先,您的数据保存在远端服务器一份,服务器需要对您的身份识别。一段RSA加密字符串。启动GUI,菜单-帮助,【Step1-创建密钥】Generate SSH KEY

【Step2-添加密钥】去你的代码托管服务器,你的账号设置中,添加它。 比如在Github中的地址,title随意,比如你可以用Home,company等作为标识来区别。

Gitlab中的演示

账号保存 如果不做设置的话,每次提交的时候,都会询问你填写密码。于是我们先来把这个设置好。【Step3.1-添加环境变量】 我的电脑- 属性- 高级系统设置- 环境变量- 新建变量 变量名HOME,变量值%USERPROFILE%

git的使用教程

GitLab基础使用教程 目录 1、GitLab开发版本管理服务器 (2) 2、添加本地域名解析 (2) 3、修改密码并重新登录 (3) 4、Git Bash下使用Gitlab (3) 5、MyEclipse中使用Gitlab (9) 6、两个重要的文件 (28)

1、GitLab开发版本管理服务器 GitLab,是一个利用 Ruby on Ra ils 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。 我们的GitLab开发版本管理服务器:http://opc/,通过Web浏览器访问我们的GitLab界面 2、添加本地域名解析 到系统目录C:\Windows\System32\drivers\etc下,拷贝出hosts文件,编辑hosts文件,添加“192.168.222.89 opc”行(,回车确保这一行IP映射生效,另存为时注意:1)无后缀名;2)保存编码为ASCII编码格式。 此时,在浏览器中直接输入http://opc/”即可进入我们的GitLab

3、修改密码并重新登录 管理员帮你注册后,你的注册邮箱会收到一封来自GitLab的邮件,邮件中包含登陆地址、首次登陆用的密码(系统随机生成的) 必须使用初始密码登陆后修改登陆密码,然后用新密码登陆即可。 4、Git Bash下使用Gitlab 1、在Windows下安装Git客户端软件 在你的Windows机器上,为了能够方便的检入检出项目,需要安装Git客户端软件,安装完之后会生成 2、生成SSH密钥验证身份 如果你想进行代码的上传与下载等操作,需要你把自己的ssh key导入到gitlab里,方法如下:(Linux下生成方式相同,在自己的home目录下输入该命令即可)打开上步安装生成的Git Bash,输入ssh-keygen -t rsa -C "YOUR EMAIL ADDRESS”,YOUR EMAIL ADDRESS是你的邮箱地址,一直回车即可,此命令在C:\Users\<你的用户名>\.ssh目录下生成一对公私密钥,拷贝公钥(.pub结尾的文件)的

StGit教程_CN

原文:StGit tutorial 翻译:tekkamanninja@https://www.wendangku.net/doc/a7996472.html, 翻译完成时间:2011年12月25日星期日 V1.0

目录 获取帮助 (3) 开始使用 (3) 创建一个补丁 (3) 创建另一个补丁 (4) 更新提交信息 (5) 冲突 (5) 工作流程:开发分支 (7) 工作流程:跟踪分支 (8) 向上游提交补丁 (8) 衍合补丁序列 (9) 当你的补丁被采纳 (9) 导入补丁 (10) 导入一个纯补丁 (10) 一次导入多个补丁 (10) 从一封电子邮件中导入补丁 (10) 导入满载补丁的mailbox文件 (10) 其他需要提及的事项 (11) 撤销操作 (11) 同Git交互 (11) 补丁相关 (11) 模板 (12)

StGit是一个命令行应用程序,提供类似Quilt的功能(比如从一个补丁栈中入栈/出栈补丁),但使用Git代替diff和patch 工具。StGit将他的补丁作为普通的Git提交保存在Git仓库中,并提供一系列命令以各种方式操纵他们。 这个教程假设你已经熟悉Git的基本知识(如分支、提交和冲突)。关于Git的详细信息,请参考git(1)或the Git home page。 获取帮助 获取完整的StGit命令列表: $ stg help 获取单个StGit子命令的快速帮助: $ stg help 获取一个StGit子命令的详细帮助: $ man stg- (详细文档也可通过HTML 格式获得) 开始使用 StGit不是一个可单独使用的程序——他操作一个已用git init 或git clone创建好的Git仓库。所以请先获取一个这样的仓库;如果你手头没有,试试下面的范例: $ git clone git://repo.or.cz/stgit.git $ cd stgit 在创建StGit补丁前,你必须先运行stg init: $ stg init 这个命令针对当前分支初始化StGit的元数据。(如果还想获得另一分支的StGit补丁,你必须到另一个分支中再次运行stg init。) 注作为快捷指令,stg clone将会在执行git clone后运行stg init。 创建一个补丁 现在准备创建我们的第一个补丁: $ stg new my-first-patch 这将会创建一个名为my-first-patch的补丁,并且打开一个编辑器让你编辑补丁的提交信息。(如果你没有在命令行中给出补丁名,StGit 将会自动通过提交信息的第一行生成补丁名。)这个补丁是空的,可以通过运行stg show命令看出。 $ stg show 但这不会保持太久!用你中意的文本编辑器打开一个文件(译者注:已被跟踪的文件),做些修改并保存。此时,你的代码树中就有了本地的变更: $ stg status M stgit/main.py 然后refresh(刷新)补丁: $ stg refresh 瞧 - 这个补丁不再是空的: $ stg show commit 3de32068c600d40d8af2a9cf1f1c762570ae9610 Author: Audrey U. Thor Date: Sat Oct 4 16:10:54 2008 +0200 Tell the world that I've made a patch diff --git a/stgit/main.py b/stgit/main.py

相关文档