GIT最初是由Linus Benedict Torvalds为了更有效地管理Linux内核开发而创立的分布式版本控制软件,与常用的版本控制工具如CVS、Subversion不同,它不必服务器端软件支持,速度和效率也有着相当程度的提高。

  如果拥有CVS或者SVN的使用背景,那么更熟悉的方法是客户端-服务器端模式,所有的文件仓库(repository)都是存放在服务器上的,用户需要在本地安装客户端去服务器上的项目中获取旧版本,提交新版本。

  GIT抛弃了这种模式,当用户从远端GIT仓库下载一个工程(project)时,这个工程的所有文件,包括版本历史,文件改动都会下载下来,这时 候本地GIT就演变成了一个服务器,所有的提交(check-in)、提出(check-out)都会在这个本地服务器上执行,当你确定一项修改之后,可 以再和远端仓库进行合并和同步(merge)。所以,GIT的安装和配置步骤无论在本机还是服务器上都是完全一样的。

  这里简单地介绍GIT在Linux上的安装和使用,算做一个新手入门的简单教程。另外,GIT是有Windows上的客户端的。

  1、下载和安装GIT

  解压后切换到其目录

  $ tar xvfj git-1.7.6.tar.bz2

  $ cd git-1.7.6

  使用默认配置进行安装,如果想修改配置,可以使用 ./configure --help 来获取帮助

  $ ./configure

  $ make

  $ make install

  2、初始化配置

  GIT默认安装在 /usr/local/bin ,安装之后可以验证一下是否安装好

  $ whereis git

  git: /usr/local/bin/git

  $ git --version

  git version 1.7.6

  $ git --help

  首先需要指定用户名和电子邮件地址

  $ git config --global user.name "GIT Admin"

  $ git config --global user.emal

  再验证一下配置信息

  $ git config --list

  user.name=GIT Admin

  core.repositoryformatversion=0

  core.filemode=true

  core.bare=false

  core.logallrefupdates=true

  其实这些配置是存放在个人主目录下的 .gitconfig 文件中的

  $ cat ~/.gitconfig

  [user]

  name = GIT Admin

  email =

  3、建立工程

  本地存储的任何一个目录都可以建立GIT工程,如果已有工程位于 /home/obugs/projects/orangebugs 目录,就可以把这目录定义为GIT工程

  $ cd /home/obugs/projects/orangebugs

  $ git init

  Initialized empty Git repository in /home/obugs/projects/orangebugs/.git/

  这样就建立了一个名为 .git 的文件夹,这就是GIT用来存储信息和跟踪改动的文件夹。

  $ ls -altr .git

  total 40

  drwxrwxr-x 4 git git 4096 Aug 13 22:39 refs

  drwxrwxr-x 4 git git 4096 Aug 13 22:39 objects

  drwxrwxr-x 2 git git 4096 Aug 13 22:39 info

  drwxrwxr-x 2 git git 4096 Aug 13 22:39 hooks

  -rw-rw-r -- 1 git git 23 Aug 13 22:39 HEAD

  -rw-rw-r -- 1 git git 73 Aug 13 22:39 description

  -rw-rw-r -- 1 git git 92 Aug 13 22:39 config

  drwxrwxr-x 2 git git 4096 Aug 13 22:39 branches

  drwxrwxr-x 36 git git 4096 Aug 13 22:39

  drwxrwxr-x 7 git git 4096 Aug 13 22:39 .

  4、向工程添加和提交文件

  这些动作和CVS、SVN等操作类似

  $ git add *.java *.c

  $ git commit -m 'Initial upload of the project'

  create mode 100755 Orangebugs.java

  create mode 100755 pwm/ui/DataManager.java

  create mode 100755 pwm/ui/PasswordFrame.java

  create mode 100755 pwm/tools/StrongEncryption.java

  create mode 100755 pwm/tools/PasswordStrength.java

  注意如果之前没有使用 git config 指定用户名和电子邮件地址,这里会报错

  $ git commit -m 'Initial upload of the project'

  *** Pleasetell me who you are.

  Run

  git config --global user.email "you@example.com"

  git config --global user.name "Your Name"

  to set your account's default identity.

  Omit --global to set the identity only in this repository.

  fatal: empty ident not allowed

  5、更改文件和提交改动

  编辑文件、添加或者删除了一些字段

  $ vi Orangebugs.java

  查看和GIT仓库中的文件相比有了那些改动

  $ git diff

  diff --git a/Orangebugs.java b/Orangebugs.java

  index 6166ed1fd82d32 100644

  - a/Orangebugs.java

  +++ b/Orangebugs.java

  @@ -2,7 +2,7 @@

  - public counter=10

  + public counter=55

  如果要提交,需要先确保将文件添加到了临时区域(staging area)然后才能提交,提交时会自动打开系统的默认编辑器,用户添加一些注释后保存并退出编辑器的时候,这些注释就同时提交到仓库中去了

  $ git add Orangebugs.java

  $ git commit

  [master 80f10a9] Added password strength meter functionality

  1 files changed, 56 insertions(+), 7 deletions(-)

  或者,简单一点的方法是使用 git commit -a 把上面两个命令合二为一

  6、查看状态和查看注释

  如果本地的文件和远端GIT仓库上的文件相比没有任何改动,则

  $ git status

  # On branch master

  nothing to commit (working directory clean)

  如果本地做了改动但是没有提交,则

  $ git status

  # On branch master

  # Changes not staged for commit:

  # (use "git add …" to update what will be committed)

  # (use "git checkout - …" to discard changes in working directory)

  #

  # modified: Orangebugs.java

  #

  no changes added to commit (use "git add" and/or "git commit -a")

  另外,可以用下面的命令查看文件历史和以往的注释

  $ git log Orangebugs.java

  commit c919ced7f42f4bc06d563c1a1eaa107f2b2420d5

  Author: GIT Admin

  Date: Sat Aug 13 22:54:57 2011 -0700

  Added password strength meter functionality

  commit c141b7bdbff429de35e36bafb2e43edc655e9957

  Author: GIT Admin

  Date: Sat Aug 13 20:08:02 2011 -0700

GIT在Linux上的安装和使用简介的更多相关文章

  1. 在Linux上怎么安装和配置Apache Samza

    samza是一个分布式的流式数据处理框架(streaming processing),它是基于Kafka消息队列来实现类实时的流式数据处理的.(准确的说,samza是通过模块化的形式来使用kafka的 ...

  2. jemalloc在linux上从安装到使用

    jemalloc在linux上从安装到使用 上次在引导大家安装Redis时提到可能会报错:  发现了redis有用到jemalloc. 首先,jemalloc是干什么的? 我们看看作者自己的介绍: j ...

  3. 分布式缓存技术redis学习系列(一)——redis简介以及linux上的安装

    redis简介 redis是NoSQL(No Only SQL,非关系型数据库)的一种,NoSQL是以Key-Value的形式存储数据.当前主流的分布式缓存技术有redis,memcached,ssd ...

  4. 分布式缓存技术redis学习(一)——redis简介以及linux上的安装

    redis简介 redis是NoSQL(No Only SQL,非关系型数据库)的一种,NoSQL是以Key-Value的形式存储数据.当前主流的分布式缓存技术有redis,memcached,ssd ...

  5. ODI11G 在Linux上的安装配置

    ODI11G 在Linux上的安装配置 OS环境:Red hat Linux x86_64 一.JDK安装 1. 去oracle官网上下载 http://www.oracle.com/technetw ...

  6. 【JAVAWEB学习笔记】27_Redis:在Linux上的安装、Jedis和常用命令

    一.Redis简介 1.关于关系型数据库和nosql数据库 关系型数据库是基于关系表的数据库,最终会将数据持久化到磁盘上,而nosql数据     库是基于特殊的结构,并将数据存储到内存的数据库.从性 ...

  7. 【数据库】Mean web开发 04-MongoDB在Linux上的安装及遇到的问题

    简介 Mean是JavaScript的全栈开发框架.更多介绍 用MongoDB实现持久数据的存储是Mean Web全栈开发中的一部分. MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非 ...

  8. linux上redis安装配置及其防漏洞配置及其攻击方法

    Linux上redis安装: 需先在服务器上安装yum(虚拟机可使用挂载的方式安装) 安装配置所需要的环境运行指令:  yum -y install gcc 进入解压文件执行make 指令进行编译 执 ...

  9. Nginx 在 Linux 上的安装和配置

    一.Nginx的安装 1.单台Nginx的安装 Nginx在Linux上的安装可以参考这篇博客:http://blog.csdn.net/molingduzun123/article/details/ ...

随机推荐

  1. 2015第18本:从0到1,ZERO to ONE, Notes on startups, or how to build the future

    <从0到1>中文版的副标题是”开创商业与未来的秘密“,题目大得吓人,英文副标题就谨慎了许多:Notes on startups, or how to build the future. 全 ...

  2. 认识Runtime1

    认识Runtime1 什么是id? id在objc.h中的定义如下: typedef struct objc_object *id; 那么什么是objc_object呢? objc_object在ob ...

  3. CSS 相邻选择器(七)

    一.相邻选择器 相邻选择器前后部分之间用一个加号(+)隔开,前后两部分选择反符在结构上属于同级关系,如 相邻选择器,是根据左侧选择符指定相邻元素,然后在该相邻元素后面寻找匹配匹配右侧选择符的相信元素 ...

  4. IOS xib在tableview上的简单应用(通过xib自定义cell)

    UITableView是一种常用的UI控件,在实际开发中,由于原生api的局限,自定义UITableViewCell十分重要,自定义cell可以通过代码,也可以通过xib. 这篇随笔介绍的是通过xib ...

  5. iOS 内存管理(一)之基础知识介绍

    1,什么是引用计数 所有OC对象都有一个计数器,叫做引用计数,引用计数就是目前有几个对象在使用该对象(持有该对象的引用): 2,什么是对象所有权 A对象拥有B对象的引用,A对象拥有B对象的所有权: 3 ...

  6. 提示“正尝试安装的adobe flash player不是最新版本”的解决方法

    尼玛,今天下午遇到一个比较奇怪的现象,我电脑的flash的不能正常使用了,我下载了一个重新安装了下,但还是不行.然后我又卸载了,重新安装flash,重启电脑,还是不行...而且在安装flash pla ...

  7. AOP这些应用场景(交叉业务)

    1.统计某个方法的性能,可以在每个业务方法执行前后 记录方法执行的当前时间,执行后的时间-执行前的时间= 方法执行时间.  这样就可以在开发过程中(项目未交付给客户前)统计程序的性能. 2.安全 ,权 ...

  8. C#程序调用cmd执行命令

    对于C#通过程序来调用cmd命令的操作,网上有很多类似的文章,但很多都不行,竟是漫天的拷贝.我自己测试整理了一下. 代码: string str = Console.ReadLine(); Syste ...

  9. 肯爹的 StringUtils.isNumeric(String str)

    在项目中遇到一处bug,调试的结果竟然是StringUtils.isNumeric(String str) 在捣鬼(采用的是org.apache.commons.lang.StringUtils),下 ...

  10. 如何在CALayer设置滤镜

    网上有很多关于CALayer中设置filtes属性的相关资料比如如何设置一个带滤镜的layer,代码如下: NSImage* image = [NSImage imageNamed:@"IM ...