GIT使用入门详细教程
Git+使用教程
为了简明起见,我们创建两个文件作为练习:
$ echo "Hello world" > hello $ echo "Silly example" > example
我们再用 git-add 命令将这两个文件加入到版本库文件索引当中:
$ git-add hello example
Git 中文教程
● 创建一个属于自己的个人工作分支,以避免对主分支 master 造成太多的干扰,也方便与他人交流协 作。
● 当进行高风险的工作时,创建一个试验性的分支,扔掉一个烂摊子总比收拾一个烂摊子好得多。 ● 合并别人的工作的时候,最好是创建一个临时的分支,关于如何用临时分支合并别人的工作的技巧,
$ git-update-index --add hello example
如果你要将某个文件从 git 的目录跟踪系统中清除出去,同样可以用 git-update-index 命令。例如:
$ git-update-index --force-remove foo.c
Note git-add 可以将某个目录下的所有内容全都纳入内容跟踪之下,例如: git-add ./path/to/
/documents/gittutorcn.htm(第 5/23 页)2008-12-13 13:34:48
Git 中文教程
$ git-checkout robin $ echo "Work, work, workd" >> hello $ git-commit -m "Some workd" -i hello
$ git-checkout master $ echo "Play, play, play" >> hello $ echo "Lots of fun" >> example $ git-commit -m "Some fun" -i hello example
git命令行使用方法
git命令行使用方法Git是一个流行的版本控制系统,它可以让开发者轻松地跟踪代码更改、合并代码以及管理代码库。
在本文中,我们将介绍如何使用Git命令行来完成常见的Git任务。
1. 安装Git首先,您需要在您的计算机上安装Git。
您可以从Git官方网站上下载适合您操作系统的安装包,并按照安装向导进行安装。
2. 创建一个本地仓库要使用Git,您需要在您的项目中创建一个本地仓库。
您可以在项目目录中打开终端,并使用以下命令来创建一个空的Git仓库。
```git init```3. 添加文件到本地仓库一旦您创建了Git仓库,您可以使用以下命令来将文件添加到仓库中。
```git add <file>```例如,要将名为'index.html'的文件添加到Git仓库中,您可以使用以下命令。
```git add index.html```4. 提交更改一旦您将文件添加到Git仓库中,您需要将更改提交到仓库中。
您可以使用以下命令来提交更改。
```git commit -m 'commit message'```例如,要提交一个带有'Initial commit'消息的更改,您可以使用以下命令。
```git commit -m 'Initial commit'```5. 查看更改历史您可以使用以下命令来查看您的Git仓库中的更改历史。
```git log```这将显示每个提交的SHA-1哈希值、作者、时间戳以及提交消息。
6. 创建分支您可以使用以下命令来创建一个新的分支。
```git branch <branch-name>```例如,要创建名为'feature-branch'的新分支,您可以使用以下命令。
```git branch feature-branch```7. 切换分支要切换到不同的分支,您可以使用以下命令。
git使用指南
Git使用指南Li Yanruiv0.1,20080728 liyanrui.m2@前言Git是什么非常简单地说,Git是一个快速、可扩展的分布式版本控制系统,它具有极为丰富的命令集,对内部系统提供了高级操作和完全访问。
所谓版本控制系统(Version Control System),从狭义上来说,它是软件项目开发过程中用于储存我们所写的代码所有修订版本的软件,但事实上我们可以将任何对项目有帮助的文档交付版本控制系统进行管理。
2005年,Torvalds开始着手开发Git是为了作为一种过渡方案来替代BitKeeper,后者之前一直是Linux内核开发人员在使用的版本控制工具,当时由于自由软件社区中的许多人觉得BitKeeper的使用许可证并不适合自由软件社区的工作,因此Linus决定着手开发许可证更为自由灵活的版本控制系统。
尽管最初Git的开发是为了辅助Linux内核开发的过程,但是现在很多其他自由软件项目中也使用了Git实现代码版本管理,譬如,项目、许多的项目、Ruby项目等。
为什么使用版本控制系统版本控制系统是为懒人准备的,它让懒人们比那些善于备份文档的勤劳人拥有更干净的文件系统以及更多的可以活着的时间。
本文档主要内容在第1章中讲述如何使用Git管理自己的个人文档,主要是初步熟悉Git的诸多概念及其日常基本命令的使用。
第2章中主要讲述如何基于Git实现多人协作的项目开发模式,以此扭转当前实验室成员在项目研发中各自为政或不能有效沟通的现状。
第3章讲述如何利用Git强大的项目分支管理功能实现良好风格的项目协同开发模式。
第4章为Git使用之FAQ,用于记载在本实验室推广使用Git过程中诸位同学所遇到的一些细节问题。
Contents第1章使用Git管理个人文档11.1何种文档需要保存11.2建立项目仓库11.3关于建立Git仓库的一些细节31.4仓库与工作树41.5在项目中工作41.6查看版本历史51.7撤销与恢复71.8如何使用Git帮助文档81.9总结8第2章基于Git的团队协同开发92.1两个人如何协同92.2如何解决仓库合并冲突102.3三人以至更多人如何协同122.4M2GE的协同开发132.5总结14第3章项目分支管理153.1如何产生项目分支153.2分支的合并163.3M2GE新的协同开发模式163.4总结17第1章使用Git管理个人文档本章讲述如何使用Git管理我们的个人文档,用以展示Git的一些基本功能,并且秉承学以致用、用以促学的精神,引导大家积极地将Git应用于日常学习与工作中的文档备份。
TortoiseGit使用入门
TortoiseGit使用入门首先要确定TortoiseGit已找到msysgit,如果先安装msysgit 再装TortoiseGit, 一般TortoiseGit 就会自动的识别。
安装详见TortoiseGit安装教程(安装的时候,除了修改安装路径外,其他都必须默认!!尤其第一步一定要选择putty的ssh)设置与查询的方法,这里从开始菜单进入设置。
这是TortoiseGit的设置界面,可以看到用来定位MSysGit的路径。
点“Check now”检查有效性。
如果有错的话,就自己设置msysgit的bin文件路径。
右击任意文件夹,可以看到TortoiseGit已经嵌入右键了。
“Git Clone...”是获得远程的版本库,“Git Create repository here”是将选定的文件夹作为要创建的版本库。
在要创建版本库的文件夹中点“Git Create repository here”后,会显示:点“Ok”就会在该文件夹的根目录自动创建一个隐藏文件夹".git" 。
注意:最好找个空的文件夹练习操作,或者备份文件夹。
比如误选了Clean up把无版本控制的文件都删了,哭都来不及-_-。
现在,用git初始化过的文件夹就不一样啦!!不仅文件都有附加的绿钩图标(此为已添加进版本库且未被修改过的文件),右键菜单也多了操作选项。
将要使用git版本库管理的文件,选择后用git的菜单add进去master是Git默认的主要分支(主干),适合单人独自开发。
多人开发时可以给每个人创建一个分支。
按Git Commit -> “master”是将所选文件夹内容提交到用于汇总的库上。
(不知道的话,千万不要随便按)提交修改后,出现:以上就是如何提交更改到本地的版本库,所以无论有无网络Git都可以用。
远程使用Git本地Commit(提交)后,下面介绍的就是Push到远程啦.这里以Git与通信为例。
Git学习文档
Git学习⽂档#########################################################Study Document for Git#########################################################Git 基础Git ⽂件的三种状态:已提交(committed)、已修改(modified)和已暂存(staged)。
Git ⼯作⽬录的状态:已跟踪和未跟踪。
已提交表⽰数据已经安全的保存在本地数据库中。
已修改表⽰修改了⽂件,但还没保存到数据库中。
已暂存表⽰对⼀个已修改⽂件的当前版本做了标记,使之包含在下次提交的快照中。
基本的 Git ⼯作流程如下:1. 在⼯作⽬录中修改⽂件。
2. 暂存⽂件,将⽂件的快照放⼊暂存区域。
3. 提交更新,找到暂存区域的⽂件,将快照永久性存储到 Git 仓库⽬录。
Git 语法设置 Git 的配置git config --listgit config --global ***git config --global user.email @.comgit helpgit help verbgit verb --help克隆远端仓库git clone url检查当前⽂件状态git status列出当前分⽀和⽂件的状态:已跟踪/未跟踪。
[***@*** deployment]$ git status# On branch master# Untracked files:# (use "git add <file>..." to include in what will be committed)## test.mdnothing added to commit but untracked files present (use "git add" to track)跟踪新⽂件git add file[***@*** deployment]$ git add test.md[***@*** deployment]$ git status# On branch master# Changes to be committed:# (use "git reset HEAD file..." to unstage)## new file: test.md#Changes to be committed: 已暂存状态。
Git入门教程
Git入门教程考虑到CVS的一些局限性,最近和同事在公司推行Git。
其实,如果推行SVN的化,可能推行的难度会降低很多。
不过lark说既然推行一个新的版本管理工具,总要花费一定的时间进行培训、部署、转换。
而推行Git和SVN的代价不如想象中差距那么大。
因此,不如就多花些精力推行Git ,可以带来更多的好处。
这个想法说服了我。
然后就开始筹备了。
我发现网上很多git教程对一些基础命令(比如git-reset)的介绍还是不够清楚。
另外,介绍git1.5的少,介绍git1.4的多。
此外,对于如何基于Git合作开发,介绍的内容也是少之又少。
因此,决定写一份教程,以减少在公司推广Git的培训代价。
其实我也是一个Git的新手。
写这份教程也是我自己学习和摸索git的过程,其中基于Git进行合作开发的模式参考了CVS,应该是很初级的合作模式。
但是当前自己也只能做到这一步了。
教程所述都是自己通过试验验证的。
至少可以满足公司基本的合作开发。
教程写完后,谢欣说可以放到blog与大家共享。
我觉得是个不错的主意。
一方面我觉得这个文档应该可以给git的新手一些帮助,另一方面也欢迎git的大牛指点。
这里要感谢《Git中文教程》的作者。
还有概述中关于git的优点描述拷贝了网络上某位大牛的原话,但是拷贝的出处也是转载的,就在这里谢谢那位我不知名大牛了。
下面就开始了。
1. 概述对于软件版本管理工具,酷讯决定摒弃CVS而转向Git了。
为什么要选择Git?你真正学会使用Git时,你就会觉得这个问题的回答是非常自然的。
然而当真正需要用文字来回答时,却觉得文字好像不是那么够用。
咳,该则么回答呢?其实,关键的问题不在于如何回答这个问题。
问题的关键是公司已经决定使用它了。
那么,我们的程序员们!请开动你们的浏览器,请拿出你的搜索引擎工具,去自己发掘答案吧。
在这里,我只能给你们一个最朦胧的感觉。
Git和CVS、SVN不同,是一个分布式的源代码管理工具。
TortoiseGit使用入门教程
TortoiseGit入门教程--参考资料:TortoiseGit帮助文档边城浪子二O一七年元月二十日目录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现在有多语言包可以下载,本文档使用英文版进行说明。
本文档是以个人经验参考官方文档整理出来的,可能会存在很多问题,如有理解不正确的地方希望能够指出,大家共同学习吧。
Git安装和TortoiseGit详细使用教程【基础篇】
Git安装和TortoiseGit详细使⽤教程【基础篇】环境:win8.1 64bit这⾥需要说明⼀下,⽹上也有很多绿⾊版免安装的,今天这⾥主要还是介绍安装版的是如何安装的,⽅便参考和学习。
绿⾊免安装版下载地址:安装准备:1. ⾸先你得安装windows下的git2. 安装版本控制器客户端tortoisegit [32和64别下载错,不习惯英⽂的朋友,也可以下个语⾔包]⼀、安装图解:1. 先安装GIT【⼀路默认即可】安装好git以后,右键,会发现菜单多了⼏项关于GIT的选项2.安装tortoisegit【⼀路默认即可】安装好以后,右键,会发现菜单多了⼏项关于tortoisegit的选项到此,安装算完成了,相⽐tortoiseSVN,安装完tortoiseGIT不需要重启电脑。
接下来是使⽤tortoiseGIT⼆、图解使⽤tortoiseGIT这⾥只是做⼀些最基本的功能的演⽰:创建版本库,提交(commit)⽂件,推送(push)⽂件,更新⽂件,创建分⽀。
简介:git属于分布式版本控制器,其实每个⼈的电脑都是⼀个完整的版本库;⽐如两个⼈在局域⽹写⼀个项⽬,那么这两个⼈的电脑⾥⾯都是⼀个完整的项⽬,当有新的代码出现的时候,直接push给对⽅即可。
当然⼈多的时候,⼜不在局域⽹⾥⾯,不可能push给每⼀个⼈,git 的解决⽅案是⽤⼀台电脑当做集中的版本库,⼤家把新代码都push到上⾯去,要得时候在pull到⾃⼰电脑上。
国外⽐较著名的就是github了,国内的oschina也⼴为⼈知。
1. 创建⼀个版本库创建⼀个⽂件夹GitDemo,然后右键--Git Create repository here...此处不⽤勾选Make is Bare确定后,在GitDemo⽂件夹下回多⼀个.git⽂件夹【电脑要设置为显⽰隐藏⽂件夹】此⽂件夹,尽量不要乱修改或删除。
2.创建⼀个⽂件,然后提交(commit)到版本库[这个操作可以在离线状态操作]2.1选择Git Commit->"master"2.2填写message,勾选要commit的⽂件,然后点击OK。
git入门(常用命令操作)
Page 23
本地版本控制 04 Local Version Control
Page 24
4.1 添加修改
· 如图给 helloworld.cpp 添加一行文本
* Git 已追踪文件的图标会随着工作区状态的改变而改变
Page 25
4.1 添加修改
· 使用 git status 命令查看当前仓库工作区的状态
Page 4
1.2 集中式版本控制系统(CVCS)
· 集中式版本控制系统(CVCS): 这类系统,诸如 CVS,Subversion 以及 Perforce 等,都有一个单一的 集中管理服务器,保存所有文件的修订版本,而协同工作的开发人员都通过 客户端连到这台服务器,取出最新的文件或者提交更新。 这么做最显而易见的缺点是中央服务器的单点故障。如果宕机一小时, 那么在这一小时内,谁都无法提交更新,也就无法协同工作。要是中央服务 器的磁盘发生故障,碰巧没做备份,或者备份不够及时,就还是会有丢失数 据的风险,最坏的情况是彻底丢失整个项目的所有历史更改记录。
Page 35
4.4 撤销修改
撤销修改分为三种情况: · 仅仅修改了工作区内容,未添加到暂存区 · 修改了工作区内容并且添加到暂存区,但未提交修改 · 修改被添加到暂存区并且提交了修改
Page 36
4.4 撤销修改
情况一: 仅仅修改了工作区内容,未添加到暂存区(没有经过 add 和 commit 的修改),如图
* --global 表示设置的范围(系统,全局,项目)
· 修改前需要先使用 --unset 参数清空需要修改的设置 $ git config --unset --global
Page 15
2.1 Git 的帮助与初始化
TortoiseGit使用教程
TortoiseGit使⽤教程该⽂章转⾃:https:///share/?id=dc4d97ed11598f4cc27db60ce87dde5a&type=note#/()前⾔ 作为⼀个软件开发⼈员,不可能不知道Git。
Git作为⼀个复杂的版本控制系统,命令之多,即使经常使⽤,⼀些命令也记不住,⼀般只记住⼏个常⽤的命令,不是所有使⽤Git命令⾏都是⾼效的。
本教程不讲Git命令,⽽是先让你⽤上git,再去学习git。
本教程应该称作TortoiseGit⼊门指南。
因为下⾯要借助⼀个图形化的软件,TortoiseGit来操作git。
⽤GUI(图形界⾯)再谈CLI(命令⾏),我相信这会更容易让⼈接受。
TortoiseGit 简介TortoiseGit 简称 tgit,中⽂名海龟Git。
TortoiseGit是⼀个开放的GIT版本控制系统的源客户端。
TortoiseGit ⽀持Winxp/vista/win7/Win10,提供有中⽂版⽀持。
TortoiseGit 可以恢复您的⽂件的旧版本,并研究如何以及合适改变了历史数据,谁改变了它。
下⾯教程针对使⽤TortoiseGit 的⽤户。
下载安装Git及Tortoisegit 环境安装,需要依次安装以下: 第1步:下载Git,下载地址: Git 安装过程不详述,可参考:https:///wj-1314/p/7993819.html 第2步:下载安装Tortoisegit及中⽂语⾔包(Tortoisegit及语⾔包,Tortoisegit )Tortoisegit 配置 第1步:⾸先,请选定⼀个存放Git项⽬的⽬录,这样⽅便管理. 如: E:\Git,然后在资源管理器中打开: 第2步:在空⽩处点击⿏标右键,选择 --> TortoiseGit --> Settings,然后就可以看到配置界⾯: 第3步:选中General,在右边的 Language中选择简体中⽂(当然,你也可以继续使⽤英⽂)。
Git完全使用教程建网站soeasy
Git完全使⽤教程建⽹站soeasy在傻⽠式部署⽅式出现问题之后,我们该通过什么⽅法搭建⽹站呢?其实京东云擎本⾝已经给出了答案,那就是Git。
关于Git 是什么我们就不做过多介绍了,它与以前的FlashFXP这类FTP⼯具的作⽤很相似,但⼜⽐这些⼯具强⼤的多,⽽了解⽹站建设的朋友对于FlashFXP这类⼯具⼀定不会陌⽣,因为你想要把⽹站建⽴在服务器上,就需要⽤到FTP⼯具。
Git完全使⽤指南因此接下来,我们就来详细介绍⼀下Git的使⽤⽅法,同时本篇⽂章是以ZBlog建站为例来进⾏讲解的,学会了Git的使⽤⽅法,那么⽆论是Zblog,还是WordPress,亦或是Discuz,再或是你⾃⼰亲⼿设计的⽹站,都可以直接部署到京东云擎等虚拟服务器上。
好了闲话不多说,下⾯我们就进⼊正题吧!·Git建站⾸先要做哪些准备?在使⽤Git部署⽹站之前,⾸先你需要准备以下⼏个安装⽂件:1.去ZBlog官⽹下载ZBlog压缩包。
2.在京东云擎下载Git Bash安装包。
3.搜索SourceTree,下载安装包。
其次你需要有以下⼏个条件:1.本教程虚拟服务器以京东云擎为例,所以你要有⼀个京东帐号。
2.在京东云擎⾥建⽴⼀个PHP应⽤。
3.在京东云擎⾥建⽴⼀个MySQL数据库。
(具体可以参看《⼩学⽣都能看懂教你打造免费个⼈⽹站》)这两步准备好了之后,我们就开始本次的教程吧。
关于Git Bash的安装过程和⽅法就不多说了,⼤家直接点击安装之后,始终下⼀步即可。
Git Bash安装好打开之后的界⾯如下图所⽰。
OMG,这样的界⾯我们怎么⽤呢?Git Bash安装好之后的界⾯,呃……这个怎么⽤呢……别慌,Git Bash对于像笔者这样的⼩⽩来说当然是不好⽤,但是我们下载的SourceTree可以让Git Bash变成我们熟悉的使⽤⽅式。
还等什么?赶快点击SourceTree的安装包进⾏安装吧。
填写基本信息开始安装之后会遇到上⾯和下⾯的这些界⾯,除了⽤户信息⾃定义填写之外,其它跟笔者保持⼀致即可。
git 使用方法
git 使用方法
Git是一款分布式版本控制系统,可以用于数据的同步和版本管理。
下面我们以谷歌GitHub为例,介绍如何使用Git:
一、配置Git帐号
1. 登录GitHub
2. 点击右上角的settings,进入GitHub个人信息管理页面
3. 在左侧菜单栏点击SSH and GPG keys,点击右上角”New SSH Key“
4. 在Title输入”Git_Local“,再将本地生成的SSH Key内容复制进去,点击”Add SSH Key“
二、使用Git创建项目
1. 进入要保存项目的文件夹,点击右键打开Git Bash Here
2. git init (创建一个新的本地Git仓库)
3. git status (查看本地Git仓库的状态)
4. git add. (添加当前目录下所有文件到本地Git仓库)
5. git commit -m "xxx" (提交文件到本地Git仓库)
6. git push origin master (把本地Git仓库的commit提交到GitHub)。
git详细安装教程及下载太慢的解决办法
git详细安装教程及下载太慢的解决办法下载传送门第⼀步:双击下载后的Git-2.21.0-64-bit.exe,开始安装安装开始第⼆步:选择安装路径,点击[next]第三步:在窗⼝中选择组件,添加勾选倒数第⼆个组件:在所有命令⾏中使⽤Truetype字体,点击[next]选择组件第四步:选择默认编辑器,我⽇常使⽤Vscode作为编辑器,勾选使⽤ Visual Studio Code 作为 Git 的默认编辑器,点击[next]选择默认编辑器第五步:[创建⽂件夹]界⾯,选项默认,点击[next]第六步:[修改系统的环境变量]界⾯,我勾选的第⼆个选项,点击[next]选项⼀,不会修改系统环境变量,但是Windows系统cmd命令⾏中⽆法使⽤git命令选项⼆,会将git相关程序加⼊系统环境变量中,使得Windows系统cmd命令⾏中可以使⽤git命令选项三,会将git相关程序以及⼀些其他的Unix⼯具加⼊系统环境变量,使得Windows系统cmd命令⾏中可以使⽤git以及Unix ⼯具。
要注意的是,这将覆盖Windows⼯具,如 “ find 和 sort ”。
只有在了解其含义后才使⽤此选项。
修改系统环境变量第七步:选择SSH可执⾏⽂件,选择开源代码,点击[next]选择SSH可执⾏⽂件第⼋步:选择HTTPS传输后端,使⽤OpenSSL 库,点击[next]选项⼀,使⽤ OpenSSL 库选项⼆,使⽤本地 Windows 安全通道库选择HTTPS传输后端第九步:配置⾏结束转换,默认选择第⼀项配置,点击[next]选项⼀,选项让Git能够⾃动转换⽂件中的换⾏符;签出到本地时转换为Windows下的换⾏符,提交到服务器时转换为Unix下的换⾏符选项⼆,选项让Git在签出到本地时不做转换,保留原始⽂件的换⾏符;提交到服务器时转换为Unix下的换⾏符选项三,让Git在签出到本地时和提交到服务器时都不做转换配置⾏结束转换第⼗步:配置终端模拟器以与 Git Bash ⼀起使⽤,默认选择第⼀项配置,点击[next]选项⼀,Git Bash将使⽤MinTTY作为终端模拟器,该模拟器具有可调整⼤⼩的窗⼝,⾮矩形选区和Unicode字体选项⼆,选项使⽤Windows系统cmd命令⾏来作为Git命令⾏配置终端模拟器以与 Git Bash ⼀起使⽤第⼗⼀步:配置额外的选项,默认配置即可,点击[Install]选项⼀,启⽤⽂件系统缓存选项⼆,启⽤Git凭证管理器选项三,启⽤符号链接配置额外的选项第⼗⼆步:等待安装完成第⼗三步:验证总结。
在Ubuntu18.04上安装Git与入门教程
在Ubuntu18.04上安装Git与⼊门教程在Ubuntu 18.04上安装Git步骤1.⾸先,通过运⾏以下命令确保您的系统和apt包列表完全更新:apt-get update -yapt-get upgrade -y第2步。
在Ubuntu 18.04上安装Git。
现在让我们安装git:apt install git您可以使⽤以下命令来检查已安装的git版本:$ git --version第3步。
在Ubuntu 18.04上配置Git。
安装后您可能想要做的第⼀件事是在Git中配置⾃⼰的名称和电⼦邮件地址,以便您提交的更改包含正确的信息。
您可以通过使⽤以下命令来完成此操作:linuxidc@linuxidc:~$ git config --global "liweikuan"linuxidc@linuxidc:~$ git config --global user.email "liweikuan123@"接下来,我们将通过查看.gitconfig来验证配置更改:linuxidc@linuxidc:~$ git config --list=liweikuanuser.email=liweikuan123@有关更多信息和命令⾏选项,可以使⽤-help标签:git --helplinuxidc@linuxidc:~$ git --help⽤法:git [--version] [--help] [-C <path>] [-c <键名>=<值>][--exec-path[=<路径>]] [--html-path] [--man-path] [--info-path][-p | --paginate | --no-pager] [--no-replace-objects] [--bare][--git-dir=<路径>] [--work-tree=<路径>] [--namespace=<名称>]<命令> [<参数>]这些是各种场合常见的 Git 命令:开始⼀个⼯作区(参见:git help tutorial)clone 克隆⼀个仓库到⼀个新⽬录init 创建⼀个空的 Git 仓库或重新初始化⼀个已存在的仓库在当前变更上⼯作(参见:git help everyday)add 添加⽂件内容⾄索引mv 移动或重命名⼀个⽂件、⽬录或符号链接reset 重置当前 HEAD 到指定状态rm 从⼯作区和索引中删除⽂件检查历史和状态(参见:git help revisions)bisect 通过⼆分查找定位引⼊ bug 的提交grep 输出和模式匹配的⾏log 显⽰提交⽇志show 显⽰各种类型的对象status 显⽰⼯作区状态扩展、标记和调校您的历史记录branch 列出、创建或删除分⽀checkout 切换分⽀或恢复⼯作区⽂件commit 记录变更到仓库diff 显⽰提交之间、提交和⼯作区之间等的差异merge 合并两个或更多开发历史rebase 在另⼀个分⽀上重新应⽤提交tag 创建、列出、删除或校验⼀个 GPG 签名的标签对象协同(参见:git help workflows)fetch 从另外⼀个仓库下载对象和引⽤pull 获取并整合另外的仓库或⼀个本地分⽀push 更新远程引⽤和相关的对象命令 'git help -a' 和 'git help -g' 显⽰可⽤的⼦命令和⼀些概念帮助。
git入门教程之变基合并
git ⼊门教程之变基合并git ⿎励⼤量使⽤分⽀---"早建分⽀!多⽤分⽀!",这是因为即便创建再多的分⽀也不会造成存储或内存开销,并且分⽀的作⽤有助于我们分解逻辑⼯作,这样⼀样其实⽐维护单⼀臃肿分⽀要简单得多!正因如此,每个新功能会创建合并分⽀,修复 bug 会创建合并分⽀等等,⼀段时间后再次回顾整个版本库的提交历史就会发现分⽀错综复杂,难以理清!虽然"条条⼤路通罗马",但错综复杂的道路容易让⼈迷失⽅向,如果不使⽤分⽀,当然就不存在"分叉问题",所以在某些情况下我们希望寻求⼀种替代⽅案来解决分⽀合并带来的"分叉问题"!回顾提交历史查看提交历史: git log --pretty=oneline --graph --abbrev-commit仅仅是简单的演⽰项⽬的提交历史都已经出现"分叉问题",更何况真实的企业级开发项⽬呢?如果真的是多分⽀多⼈合作开发的话,"分叉现象"将更加明显,模拟效果图⼤概长这样:git-branch-multiple.png整理提交历史如果想要⼀条直路直达罗马,那我们必须规划好路径,摒弃⼩道,坚持主⼲道.git 的各种 dev ,feature 等分⽀就是需要治理的⼀条条分叉⼩道,⽽master 主分⽀就是我们的⼤道.演⽰项⽬有三个分⽀,主⼲master ,开发dev ,⾃定义snow ,⽬标是将⾃定义 snow 分⽀的⼯作成功整理合并到主⼲分⽀,从⽽解决"分叉问题",dev 分⽀与项⽬演⽰⽆关,⽆需更改.(1). 切换到 snow 分⽀并提交⼀个版本(learn git rebase )git-branch-rebase-snow.png(2). 切换到 master 分⽀也提交⼀个版本(modify README )# 查看提交历史$ git log --pretty=oneline --graph --abbrev-commit* e60c8ad (HEAD -> dev, origin/master, origin/HEAD, master) fix bug about issue-110* 3fe94c0 fast forward* 22fbef7 git merge --no-ff dev|\| * 44d68f6 git checkout -b dev|/* 3b8f434 fix conflict|\| * 0fe95f8 git commit c2* | 0949cc3 git commit c3|/* 5c482cd git commit c1* 413a4d1 see https://snowdreams1006.github.io/git/usage/branch-overview.html* 9c30e50 learn git branch* b3d8193 see https://snowdreams1006.github.io/git/usage/remote-repository.html* 8e62564 add test.txt* 9b196aa Initial commit# 切换到 `snow` 分⽀$ git checkout snowSwitched to branch 'snow'# 追加新内容到 `test.txt` ⽂件$ echo "learn git rebase" >> test.txt# 提交到版本库$ git commit -am "learn git rebase"[snow 7d21e80] learn git rebase1 file changed, 1 insertion(+)$# 切换回 `master` 分⽀$ git checkout masterSwitched to branch 'master'Your branch is up to date with 'origin/master'.# 追加新内容到 `README.md` ⽂件$ echo "learn git ,share git" >> README.md# 提交到版本库$ git add README.md$ git commit -m "modify README"[master 3931d48] modify README1 file changed, 1 insertion(+)$git-branch-rebase-master.png(3). 切换回snow分⽀,整理提交历史(git rebase)到master分⽀# 切换到 `snow` 分⽀$ git checkout snowSwitched to branch 'snow'# 改变基础版本(⽗版本),简称"变基"$ git rebase masterHEAD is up to date.# 当前提交历史线$ git log --pretty=oneline --graph --abbrev-commit* e92f068 (HEAD) rebase* 72f4c01 fix confict about happy coding* 3931d48 (master) modify README* e60c8ad (origin/master, origin/HEAD, dev) fix bug about issue-110* 3fe94c0 fast forward* 22fbef7 git merge --no-ff dev|\| * 44d68f6 git checkout -b dev|/* 3b8f434 fix conflict|\| * 0fe95f8 git commit c2* | 0949cc3 git commit c3|/* 5c482cd git commit c1* 413a4d1 see https://snowdreams1006.github.io/git/usage/branch-overview.html * 9c30e50 learn git branch* b3d8193 see https://snowdreams1006.github.io/git/usage/remote-repository.html * 8e62564 add test.txt* 9b196aa Initial commit$git-branch-rebase.png(4). 切换回master主⼲分⽀再次变基合并snow分⽀# 切换回 `master` 分⽀$ git checkout masterWarning: you are leaving 2 commits behind, not connected toany of your branches:e92f068 rebase72f4c01 fix confict about happy codingIf you want to keep them by creating a new branch, this may be a good timeto do so with:git branch <new-branch-name> e92f068Switched to branch 'master'Your branch is ahead of 'origin/master' by 1 commit.(use "git push" to publish your local commits)# 改变⽗版本为 `snow` 分⽀指向的版本$ git rebase snowFirst, rewinding head to replay your work on top of it...Applying: modify README$git-branch-rebase-back-master.png(5). 整理分⽀完成,最终主⼲分⽀是⼀条直线# 查看提交历史线$ git log --pretty=oneline --graph --abbrev-commit# `modify README` 是 `master` 分⽀提交的版本* dcce09c (HEAD -> master) modify README# `learn git rebase` 是 `snow` 分⽀提交的版本* 7d21e80 (snow) learn git rebase* a06a866 fix conflict|\这⼀次我们没有使⽤ git merge ⽽是采⽤ git rebase ⽅式完成了分⽀的合并,优点是提交历史更清晰,缺点是丢失了分⽀信息.⼩结git rebase 变基合并分⽀,实际上就是取出⼀系列的提交版本并“复制”到⽬标版本,从⽽形成⼀条新的提交历史线.⽐如我们想要把 bugFix 分⽀⾥的⼯作直接移到 master 分⽀上,移动以后会使得两个分⽀的功能看起来像是按顺序开发,但实际上它们是并⾏开发的,这就是 git rebase 的作⽤.git rebase 的优势是创造更线性的提交历史,使得代码库的提交历史变得异常清晰,劣势是缺失了分⽀信息,好像从没存在过该分⽀⼀样.1. 将⽬标分⽀上的⼯作成果转移到到主⼲分⽀ : git rebase master2. 主⼲分⽀接收已转移好的⽬标分⽀⼯作成果 : git rebase <branch>| * e60c8ad (origin/master, origin/HEAD, dev) fix bug about issue-110* | ab846f9 learn git stash* | 93227ba Happy coding|/* 3fe94c0 fast forward* 22fbef7 git merge --no-ff dev|\| * 44d68f6 git checkout -b dev|/* 3b8f434 fix conflict|\| * 0fe95f8 git commit c2* | 0949cc3 git commit c3|/* 5c482cd git commit c1* 413a4d1 see https://snowdreams1006.github.io/git/usage/branch-overview.html * 9c30e50 learn git branch* b3d8193 see https://snowdreams1006.github.io/git/usage/remote-repository.html * 8e62564 add test.txt。
Git下载安装及Idea配置教程(亲测使用)
Git下载安装及Idea配置教程(亲测使⽤)Git版本控制⼯具 ==》辅助团队开发安装前准备: 按照⾃⼰的操作系统下载Git软件版本; PS:我的操作系统:Windows10 64位,安装版本为Git-2.16.1-64-bit.exeGit下载:开始安装:( PS:本⽂已⽣成word⽂档,有需要的可以联系笔者!) 1、下载完成后,双击下载好的软件开始安装,出现如下对话框 2、点击Next,默认选项和图中不⼀样,建议可以参考图中修改 这⼀步根据⾃⼰需要设置后,也可以直接采⽤默认选项,当然也可以详细研究选择最适合⾃⼰的。
3、点击next,选择默认编辑器,我选择的是Notepad++ 4、继续next,配置PATH环境。
Use Git from Git Bash only:这是最安全的选择,因为你的PATH根本不会被修改,你只能使⽤Git Bash的Git命令⾏⼯具。
Use Git from the Windows Command Prompt:这个选项被认为是安全的,它只向PATH添加⼀些最⼩的Git包,以避免使⽤可选的Unix⼯具混淆环境。
你将能够从Git Bash和Windows命令提⽰符中使⽤Git。
建议选择此项。
Use Git and optional Unix tools from the Windows Command Prompt:Git和可选的Unix⼯具都将添加到计算机的PATH中。
警告:这将覆盖Windows⼯具,如“find”和“sort”,只有在了解其含义后才使⽤此选项。
5、继续next,以下选项均为默认。
点击Inall开始安装,安装完成后点击Finish即可。
安装完成后可以在任意⽬录下右击,能够看到右键菜单中有Git GUI Here和Git Bash Here Git Bash 是Git配套的⼀个控制台,点击打开如下图: Git GUI 是Git的可视化操作⼯具,点击打开如下图:安装后的设置 1、 Idea中配置Git: File --> Setting --> Version Control --> Git --> Path to Git executable选择你的git安装后的git.exe⽂件,然后点击Test,测试是否设置成功 2、 idea从git上拉取项⽬: FILE --> New --> Project from Version Control --> Git 输⼊项⽬的Https SSH 的URL并点击Clone联系笔者: QQ:870252398 QQ技术分享群:422167709如果你能正常成功使⽤,请举起你的⼩⼿点个赞,搜集资料不容易哦。
Git使用详细教程
Git使用详细教程Git是一个分布式版本控制系统,用于跟踪文件的变化并协同开发。
本文将为您提供Git的详细使用教程,以帮助您快速上手Git。
一、安装Git二、设置Git```git config --global "Your Name"```这些信息将用于标识您在Git上的操作。
三、创建仓库在使用Git之前,您需要创建一个仓库来存储您的代码。
在终端或命令行界面中,进入您希望创建仓库的目录,并执行以下命令:```git init```这将在当前目录创建一个新的Git仓库。
四、添加文件在仓库中,您需要将文件添加到Git跟踪之下。
在终端或命令行界面中,执行以下命令来添加文件:git add <file>```您可以使用通配符来添加多个文件。
五、提交更改当您对文件进行了修改后,您需要将这些更改提交到Git仓库。
在终端或命令行界面中,执行以下命令来提交更改:``````在提交时,您需要提供一条简短的提交信息,用于描述您的更改。
六、查看历史记录您可以使用以下命令来查看仓库的历史记录:```git log```这将显示提交的历史记录,包括提交者、提交时间和提交信息。
七、创建分支分支是Git的一个重要概念,它允许您在代码的不同版本之间进行切换和并行开发。
在终端或命令行界面中,执行以下命令来创建一个新的分支:git branch <branch-name>```其中,`<branch-name>`是您希望创建的分支名称。
八、切换分支要切换到另一个分支,您可以使用以下命令:```git checkout <branch-name>```其中,`<branch-name>`是您希望切换到的分支名称。
九、合并分支当您完成了一些分支上的开发工作后,您可以将其合并到主分支或其他分支上。
在终端或命令行界面中,切换到目标分支,并执行以下命令来合并分支:```git merge <branch-name>```其中,`<branch-name>`是您希望合并的分支名称。
Git常用命令详解
Git常⽤命令详解Git 是⼀个很强⼤的分布式版本管理⼯具,它不但适⽤于管理⼤型开源软件的源代码(如:),管理私⼈的⽂档和源代码也有很多优势(如:)Git 的更多介绍,请参考我的上⼀篇博客:⼀、 Git 命令初识在正式介绍Git命令之前,先介绍⼀下Git 的基本命令和操作,对Git命令有⼀个总体的认识⽰例:从Git 版本库的初始化,通常有两种⽅式:1)git clone:这是⼀种较为简单的初始化⽅式,当你已经有⼀个远程的Git版本库,只需要在本地克隆⼀份例如:git clone git:///someone/some_project.git some_project上⾯的命令就是将'git:///someone/some_project.git'这个URL地址的远程版本库,完全克隆到本地some_project⽬录下2)git init 和 git remote:这种⽅式稍微复杂⼀些,当你本地创建了⼀个⼯作⽬录,你可以进⼊这个⽬录,使⽤'git init'命令进⾏初始化;Git 以后就会对该⽬录下的⽂件进⾏版本控制,这时候如果你需要将它放到远程服务器上,可以在远程服务器上创建⼀个⽬录,并把可访问的URL记录下来,此时你就可以利⽤'git remote add'命令来增加⼀个远程服务器端,例如:git remote add origin git:///someone/another_project.git上⾯的命令就会增加URL地址为'git: ///someone/another_project.git',名称为origin的远程服务器,以后提交代码的时候只需要使⽤ origin别名即可⼆、 Git 常⽤命令1) 远程仓库相关命令检出仓库: $ git clone git:///jquery/jquery.git查看远程仓库:$ git remote -v添加远程仓库:$ git remote add [name] [url]删除远程仓库:$ git remote rm [name]修改远程仓库:$ git remote set-url --push [name] [newUrl]拉取远程仓库:$ git pull [remoteName] [localBranchName]推送远程仓库:$ git push [remoteName] [localBranchName]*如果想把本地的某个分⽀test提交到远程仓库,并作为远程仓库的master分⽀,或者作为另外⼀个名叫test的分⽀,如下:$git push origin test:master // 提交本地test分⽀作为远程的master分⽀$git push origin test:test // 提交本地test分⽀作为远程的test分⽀2)分⽀(branch)操作相关命令查看本地分⽀:$ git branch查看远程分⽀:$ git branch -r创建本地分⽀:$ git branch [name] ----注意新分⽀创建后不会⾃动切换为当前分⽀切换分⽀:$ git checkout [name]创建新分⽀并⽴即切换到新分⽀:$ git checkout -b [name]删除分⽀:$ git branch -d [name] ---- -d选项只能删除已经参与了合并的分⽀,对于未有合并的分⽀是⽆法删除的。
GitBash使用详细教程
GitBash使⽤详细教程Git Bash使⽤详细教程⼀:是什么? Git是⽬前世界上最先进的分布式系统。
⼆:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,⽽⼲活的时候,⽤的都是⾃⼰的电脑,所以⾸先要从中央服务器哪⾥得到最新的版本,然后⼲活,⼲完后,需要把⾃⼰做完的活推送到中央服务器。
集中式版本控制系统是必须联⽹才能⼯作,如果在局域⽹还可以,带宽够⼤,速度够快,如果在互联⽹下,如果⽹速慢的话,就纳闷了。
Git是分布式版本控制系统,那么它就没有中央服务器的,每个⼈的电脑就是⼀个完整的版本库,这样,⼯作的时候就不需要联⽹了,因为版本都是在⾃⼰的电脑上。
既然每个⼈的电脑都有⼀个完整的版本库,那多个⼈如何协作呢?⽐如说⾃⼰在电脑上改了⽂件A,其他⼈也在电脑上改了⽂件A,这时,你们两之间只需把各⾃的修改推送给对⽅,就可以互相看到对⽅的修改了。
三:在windows上如何安装Git? msysgit是 windows版的Git,如下: 需要从⽹上下载⼀个,然后进⾏默认安装即可。
安装完成后,在开始菜单⾥⾯找到 "Git --> Git Bash",如下: 会弹出⼀个类似的命令窗⼝的东西,就说明Git安装成功。
如下: 安装完成后,还需要最后⼀步设置,在命令⾏输⼊如下: 因为Git是分布式版本控制系统,所以需要填写⽤户名和邮箱作为⼀个标识。
注意:git config --global 参数,有了这个参数,表⽰你这台机器上所有的Git仓库都会使⽤这个配置,当然你也可以对某个仓库指定的不同的⽤户名和邮箱。
四:如何操作? ⼀:创建版本库。
什么是版本库?版本库⼜名仓库,英⽂名repository,你可以简单的理解⼀个⽬录,这个⽬录⾥⾯的所有⽂件都可以被Git管理起来,每个⽂件的修改,删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻还可以将⽂件”还原”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
GIT使用入门Part 1第一章基本原理git是一个版本控制系统。
官方的解释是:版本控制(Revision control)是一种软件工程技巧,籍以在开发的过程中,确保由不同人所编辑的同一档案都得到更新。
按我的白话文解释就是:一群志同道合的人身处祖国各地,希望来合作开发一个项目,假设这个项目是使用c语言写的(当然用任何语言都可以的)。
那么大家怎么合作呢?用信件?效率太低。
用邮件,不好实现多人沟通。
用googlegroup吧,可开发阶段中的源代码没法科学管理。
用自建的网站吧,需要人力物力财力来支撑阿。
这个时候版本控制系统就派上用场了。
它可以让一个团队里的不同的人在不同地点、不同时间开发和改进同一个项目,并且在大部分的时间里,版本控制系统会聪明的帮你把不同的人在不同地点不同时间修改的代码融合到项目中去。
(当然在一些特殊的情况,还是需要人去决定到底哪些代码需要加入到项目中,这个在后面讨论不迟,先让大家对版本控制有一个好印象,呵呵)知道了版本控制系统的优点之后,下面就要具体实践和体验了。
建议你选用的版本控制系统包括:rcs,cvs,svn,git,Mercurial,Bazzar等等。
当然git,Mercurial和Bazzar都是属于分布式版本控制系统。
下面是一些网友对于这些版本控制系统评论的只言片语:1)svk配合svn可以实现分布式的版本控制。
2) 我是从SVN转到Git下的。
我想Git的优势是速度飞快,谁用谁知道!3) git的确是最快的,bzr慢的要死4) SVN 在windows 下有TortoiseSVN5) git 有Windows 版本,在google code 上的项目。
/p/msysgit/6) 大家可以试试国内提供的git服务。
那么,简单地说,Git 究竟是怎样的一个系统呢?请注意,接下来的内容非常重要,若是理解了Git 的思想和基本的工作原理,用起来就会知其所以然,游刃有余。
在开始学习Git 的时候,请不要尝试把各种概念和其他的版本控制系统诸如Subversion 和Perforce 等相比拟,否则容易混淆每个操作的实际意义。
Git 在保存和处理各种信息的时候,虽然操作起来的命令形式非常相近,但它与其他版本控制系统的做法颇为不同。
理解这些差异将有助于你准确地使用Git 提供的各种工具。
直接快照,而非比较差异Git 和其他版本控制系统的主要差别在于,Git 只关心文件数据的整体是否发生变化,而大多数其他系统则只关心文件内容的具体差异。
这类系统(CVS,Subversion,Perforce,Bazaar 等等)每次记录有哪些文件作了更新,以及都更新了哪些行的什么内容,请看图1-4。
图1-4. 其他系统在每个版本中记录着各个文件的具体差异Git 并不保存这些前后变化的差异数据。
实际上,Git 更像是把变化的文件作快照后,记录在一个微型的文件系统中。
每次提交更新时,它会纵览一遍所有文件的指纹信息并对文件作一快照,然后保存一个指向这次快照的索引。
为提高性能,若文件没有变化,Git 不会再次保存,而只对上次保存的快照作一连接。
Git 的工作方式就像图1-5 所示。
图1-5. Git 保存每次更新时的文件快照这是Git 同其他系统的重要区别。
它完全颠覆了传统版本控制的套路,并对各个环节的实现方式作了新的设计。
Git 更像是个小型的文件系统,但它同时还提供了许多以此为基础的超强工具,而不只是一个简单的VCS。
稍后在第三章讨论Git 分支管理的时候,我们会再看看这样的设计究竟会带来哪些好处。
近乎所有操作都可本地执行在Git 中的绝大多数操作都只需要访问本地文件和资源,不用连网。
但如果用CVCS 的话,差不多所有操作都需要连接网络。
因为Git 在本地磁盘上就保存着所有有关当前项目的历史更新,所以处理起来速度飞快。
举个例子,如果要浏览项目的历史更新摘要,Git 不用跑到外面的服务器上去取数据回来,而直接从本地数据库读取后展示给你看。
所以任何时候你都可以马上翻阅,无需等待。
如果想要看当前版本的文件和一个月前的版本之间有何差异,Git 会取出一个月前的快照和当前文件作一次差异运算,而不用请求远程服务器来做这件事,或是把老版本的文件拉到本地来作比较。
用CVCS 的话,没有网络或者断开VPN 你就无法做任何事情。
但用Git 的话,就算你在飞机或者火车上,都可以非常愉快地频繁提交更新,等到了有网络的时候再上传到远程的镜像仓库。
同样,在回家的路上,不用连接VPN 你也可以继续工作。
换作其他版本控制系统,这么做几乎不可能,抑或非常麻烦。
比如Perforce,如果不连到服务器,几乎什么都做不了(译注:实际上手工修改文件权限改为可写之后是可以编辑文件的,只是其他开发者无法通过Perforce知道你正在对此文件进行修改。
);如果是Subversion 或CVS,虽然可以编辑文件,但无法提交更新,因为数据库在网络上。
看上去好像这些都不是什么大问题,但在实际体验过之后,你就会惊喜地发现,这其实是会带来很大不同的。
时刻保持数据完整性在保存到Git 之前,所有数据都要进行内容的校验和(checksum)计算,并将此结果作为数据的唯一标识和索引。
换句话说,不可能在你修改了文件或目录之后,Git 一无所知。
这项特性作为Git 的设计哲学,建在整体架构的最底层。
所以如果文件在传输时变得不完整,或者磁盘损坏导致文件数据缺失,Git 都能立即察觉。
Git 使用SHA-1 算法计算数据的校验和,通过对文件的内容或目录的结构计算出一个SHA-1 哈希值,作为指纹字符串。
该字串由40 个十六进制字符(0-9 及a-f)组成,看起来就像是:24b9da6552252987aa493b52f8696cd6d3b00373Git 的工作完全依赖于这类指纹字串,所以你会经常看到这样的哈希值。
实际上,所有保存在Git 数据库中的东西都是用此哈希值来作索引的,而不是靠文件名。
多数操作仅添加数据常用的Git 操作大多仅仅是把数据添加到数据库。
因为任何一种不可逆的操作,比如删除数据,要回退或重现都会非常困难。
在别的VCS 中,若还未提交更新,就有可能丢失或者混淆一些修改的内容,但在Git 里,一旦提交快照之后就完全不用担心丢失数据,特别是在养成了定期推送至其他镜像仓库的习惯的话。
这种高可靠性令我们的开发工作安心不少,尽管去做各种试验性的尝试好了,再怎样也不会弄丢数据。
至于Git 内部究竟是如何保存和恢复数据的,我们会在第九章的―幕后细节‖部分再作详述。
三种状态好,现在请注意,接下来要讲的概念非常重要。
对于任何一个文件,在Git 内都只有三种状态:已提交(committed),已修改(modified)和已暂存(staged)。
已提交表示该文件已经被安全地保存在本地数据库中了;已修改表示修改了某个文件,但还没有提交保存;已暂存表示把已修改的文件放在下次提交时要保存的清单中。
由此我们看到Git 管理项目时,文件流转的三个工作区域:Git 的本地数据目录,工作目录以及暂存区域。
图1-6. 工作目录,暂存区域和git 目录每个项目都有一个git 目录,它是Git 用来保存元数据和对象数据库的地方。
该目录非常重要,每次克隆镜像仓库的时候,实际拷贝的就是这个目录里面的数据。
从项目中取出某个版本的所有文件和目录,用以开始后续工作的叫做工作目录。
这些文件实际上都是从git 目录中的压缩对象数据库中提取出来的,接下来就可以在工作目录中对这些文件进行编辑。
所谓的暂存区域只不过是个简单的文件,一般都放在git 目录中。
有时候人们会把这个文件叫做索引文件,不过标准说法还是叫暂存区域。
基本的Git 工作流程如下所示:1. 在工作目录中修改某些文件。
2. 对这些修改了的文件作快照,并保存到暂存区域。
3. 提交更新,将保存在暂存区域的文件快照转储到git 目录中。
所以,我们可以从文件所处的位置来判断状态:如果是git 目录中保存着的特定版本文件,就属于已提交状态;如果作了修改并已放入暂存区域,就属于已暂存状态;如果自上次取出后,作了修改但还没有放到暂存区域,就是已修改状态。
到第二章的时候,我们会进一步了解个中细节,并学会如何善用这些状态,以及如何跳过暂存环节。
第二章安装安装Git是时候动动手了,不过在此之前得先安装好Git。
有许多安装方式,概括起来主要有两种,一种是通过编译源代码来安装;另一种是使用为特定平台预编译好的安装包。
从源代码安装若是条件允许,从源代码安装有很多好处,至少可以安装最新的版本。
Git 的每个版本都在不断尝试改进用户体验,所以能通过源代码自己编译安装最新版本就再好不过了。
有些Linux 版本自带的安装包更新起来并不及时,所以除非你在用最新的distro 或者backports,那么从源代码安装其实该算是最佳选择。
Git 的工作需要调用curl,zlib,openssl,expat,libiconv 等库的代码,所以需要先安装这些依赖工具。
在有yum 的系统上(比如Fedora)或者有apt-get 的系统上(比如Debian 体系的),可以用下面的命令安装:$ yum install curl-devel expat-devel gettext-devel \openssl-devel zlib-devel$ apt-get install curl-devel expat-devel gettext-devel \openssl-devel zlib-devel之后,从下面的Git 官方站点下载最新版本源代码:/download然后编译并安装:$ tar -zxf git-1.6.0.5.tar.gz$ cd git-1.6.0.5$ make prefix=/usr/local all$ sudo make prefix=/usr/local install现在已经可以用git 命令了,用git 把Git 项目仓库克隆到本地,以便日后随时更新:$ git clone git:///pub/scm/git/git.git在 Linux 上安装如果要在Linux 上安装预编译好的Git 二进制安装包,可以直接用系统提供的包管理工具。
在Fedora 上用yum 安装:$ yum install git-core在Ubuntu 这类Debian 体系的系统上,可以用apt-get 安装:$ apt-get instal git-core在 Windows 上安装在Windows 上安装Git 同样轻松,有个叫做msysGit 的项目提供了安装包,可以从Google Code 的页面上下载安装文件(.exe):/p/msysgit完成安装之后,就可以使用命令行的git 工具(已经自带了ssh 客户端)了,另外还有一个图形界面的Git 项目管理工具。