`

git简单使用

 
阅读更多

 

git 简介:

git 是一个分布式版本控制系统软件(dvcs,distributed version control system)。可以这么理解,在公共服务器上有一份git控制的工程,在本地clone后得到一份拷贝的工程,拷贝到本地后就可以把本地的git追踪的工程(也就是拷贝过来的工程)当做一个本地的控制系统,在这进行一系列的操作,添加,修改,删除等,之后感觉写的差不多了,或者需要到远程公共服务器上备份或者提交一下了,然后就  push 给 公共服务器,就可以把工作上交上去了。git的特点在于一旦clone后就可以在本地进行一系列的操作,你可能要说了那个cvs不能啊,是啊,关键是他可以把这些操作记录在本地的git上,使得这些中间提交的小步骤都可以记录,最后向服务器提交的时候是一个比较完整的版本。可以打个比方,服务器上有个照相机,它每天会在一个时刻照一张相保留版本的状态作为记录,当我们把这张照片取到本地之后,知道版本原来什么样子,传统的cvs是继续在这张照片上继续修改,最后提交给服务器,服务器保留最后的版本,但是在我们自己修改的过程中,我们无法追踪从下载下来到修改到现在这段时间的过程。git就很好的解决了这个问题,因为人家是分布式的,当下载到本地后,就归本地管了,本地继续追踪,完事后再提交给服务器,相当于全局有个大boos管,局部还有个小boss管,各自不乱。

 

git的架构:主要的三个概念: 工作目录(working direcotry)、|暂存区(staging area)、git仓库(git directory (repository))|。

工作目录:就是工作目录呗,进行修改的工作目录

暂存区:将要提交到git仓库的存放文件的一个区域,记住已经和工作目录区分开来了

git仓库:存放已经入库的东西。

其中暂存区和git仓库都在 .git一个隐藏的目录下存放着。

 

怎么它提出一个暂存区的概念呢?我个人理解是一是减少存储次数,另一个是方便撤销更改神马的。总之记住git的提交过程是先将工作目录”新“内容提交给暂存区,然后再提交给git仓库。

 

git的存储思想不是跟踪一个个单独的文件,对文件进行增量跟踪,git的思想是全局思想,把整个工作目录在存储的时候做一个snapshot(快照),相当于一个微型文件系统一样。快照中存储的对象(也就是存成了什么东西)有(提交

 

对象(commit)、二进制对象(blob)、 树对象(tree)或者标签对象(tag))。这些对象都用sha1摘要算法生成一个40位十六进制的指纹以用以区分彼此。

 

git 安装:

=========

REDHAT:  yum install git-core

          yum install git-svn git-email git-gui gitk

Debian:   apt-get install git-core

          apt-get install git-doc git-svn git-email git-gui gitk

源码安装:

安装前需要先安装依赖库:

REDHAT:

yum install curl-devel expat-devel gettext-devel \

  openssl-devel zlib-devel      

Debian:

apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \

  libz-dev libssl-dev

 

然后从官网 http://git-scm.com/下载包即可

 

 

简单配置:

=======

需要设定一下用户名和邮件地址方便提交时做记录。

$git config --global user.name username

$git config --global user.email mailaddress@mail

 

git在三个地方有配置文件: 系统中,登录用户,git仓库文件夹

$git config --system  配置的是  /etc/git/config

$git config --global   配置的是  ~/.git/config

$git config                配置的是  ./.git/config

 

优先级别是从 git仓库文件夹,登录用户,系统。记住一句话就是:县官不如现管就好了,离的最近权限就越大。

 

 

git的使用:

 

建立初始仓库:

=============

(1)从将原有工程提取到一个git仓库中:

假设目录为 work

$cd work

$git init    #初始化一个空的git仓库

$git add .   #添加当前所有进暂存区

$git commit -m 'initalized workspace'  #把暂存区内容提交到git仓库中,并添加提交说明,不添加提交说明是不会让提交滴。

$cd ..

$mkdir repo   #在适当的地方创建一个当做服务器控制系统的文件夹

$cd repo

$git clone --bare ../work . #提取之前的work下的仓库作为一个bare(干净的没有工作区的)仓库,专门存储用

把这个repo目录拷贝到服务器的某个文件下

之后再从本地clone一下

$cd work

$git clone username@hostname_or_ip:paht/to/the/repo .   #从服务器上再clone一遍,主要是为了和服务器连接上,和服务器版本对接,方便之后的提交(ssh方式通信)

-----------------------------------------------------

$......(自己看着干活吧)

$git add .    # 再次添加到暂存区

$git commit -m 'blablabla.....'  #提交到本地的git仓库

------------------repeat many times------------------

$git push     # 因为之前有clone了,所以有个remote的名字为origin,当不加push到哪时,会使用origin,这样就提交到了服务器上,当然了会让你输入密码的。

 

ok,现在服务器上有一份备份,本地有一份备份,比较安全了。晚上加班的话可以带着本回家干活,第二天到公司push到服务器上。

 

 

常用操作

=======

1)重命名文件:

git mv oldname newname   # 为啥用git的命令呢,因为这样重命名的文件可以被git追踪到更改,否则就认为是delete oldnamefile,然后create newfilenme了,不连贯了。

2)分支:分支这个概念怎么讲呢,就是可以理解为从最开始的版本衍生出了很多版本比如说vip版本,普通版本,test版,release版等等,也可以想象成一棵大树分出的大的粗枝,但是git这棵大树里的树枝很特别,怎么个特别法呢,

 

他的树枝可以合并,主干,又叫主干分支(master)是不能删除的,它可以合并其他的分支。这样才能保证他长的越来越高啊。

首先是查看分支:  $ git branch

那怎么创建分支呢?: $ git branch branchname

但是创建了分支并没有转到分支上工作,怎么转呢?简单

$git checkout branchname  #这样就转到分支上工作了,在这个分支继续生长,理解成到大这个树枝的尖了,在尖上继续生长

 

合并分支:一般是把其他分支合并到主分支(master)上

$git checkout master   #转到主分支上

$git merge branchname  #将branchname对应的分支合并到master分支上,如果有冲突会提示让你手动解决冲突

 

 

当然了git的功能很强大,既然追踪了就不仅仅是只能转到分支上开发这么简单,对于每次提交,都可以回退回去

git checkout  sha1num 至少前五位的码(就是前面说的40位的十六进制的前5位,如果不能区分再添几位即可),达到可区分就行

 

 

比如说我想恢复到某次提交的状态:

先查看那次状态对应的sha1num是啥

$git log

找到后就可以checkout了,就是转到那里

$git checkout sha1num

 

3)删除文件,最好也用 git命令,好处和重命名类似,不用再次提交了

$git rm filename

 

4) 从git仓库还原某个文件

$git reset HEAD <file>   #HEAD的意思是上次提交到git仓库的那一版 file就是具体的文件名了,名字也可以用sha1num代替

如果想全部恢复

$git reset --hard HEAD  #注意,此命令慎用,会丢失现在所有的修改,强制覆盖为上次提交到git仓库中的情况。

 

 

5)打标签,就是方便提取什么的(可以认为是某个阶段的小成品了)。

查看标签:$git tag   

添加标签:$git tag -a tagname -m 'some note'  #添加带注释的标签一定要要有“-a”参数,注释用-m参数,不加的话git会自动调用编辑器让你添加。

简单的添加标签,不加注释: $git tag tagname

 

一些常见问题 

1. .gitignore文件不起作用问题。

  gitignore书写方式:

  本项目根目录即.git所在的文件夹。创建.gitignore文件

  #为注释行,空行不匹配任何文件,这两个特征可以使.gitignore文件可读性强一些。

  通过!取反。

  斜杆/结尾的字符,被当做文件夹处理,文件夹下的所有文件将被忽略。

  除去以上三种情况,其他时候使用标准的glob模式匹配。

如果要忽略的文件已被git管理,那么你再加入gitignore已经是无效了。需要先移除,命令如下:

 

git rm --cached ignore_file

 

或者:

git rm -r --cached  WebRoot/WEB-INF/classes/**/*

 

-r:递归

 

git commit

 

然后.gitignore中的忽略,起作用

 

----------------

另外, .gitignore本身也由git进行跟踪管理。如果你不想被git管理。

你可以在 .gitignore 中加入一行:

.gitignore

这样就把自己给排除掉了。

如果对已经追踪的文件进行gitignore,则:

注:如果要忽略的文件已被git管理,需要先移除,命令如下:

e.g.:

git rm -r --cached  WebRoot/WEB-INF/classes/**/*

-r:递归

git commit

然后.gitignore中的忽略,起作用

 

 

 

一些不错的资料              

【1】Git笔记-基础  http://www.cnblogs.com/shihao/archive/2011/12/24/2300198.html

 基本的总结不错,适合回忆,现查

【2】Pro Git  英文版   http://progit.org/book/

 原理讲的很好,有时间的话最好从这看起  

【3】Pro Git  中文版   http://progit.org/2010/06/09/pro-git-zh.html

【4】Pro Git 中英文对照版   http://www.elvuel.com/progit-zh/01-introduction.html

 
分享到:
评论

相关推荐

    GIT简易使用手册

    ### Git简易使用手册知识点解析 #### 一、Git简介与特点 **Git**是一种开源的分布式版本控制系统,专为高效地处理从小型到大型项目的版本管理而设计。其分布式特性意味着开发者可以在本地提交更改,无需每次都连接...

    Git简单使用.pdf

    Git的简单使用包括一系列基本命令,这些命令可以帮助用户初始化版本库、配置用户信息、添加和删除文件、提交更改、分支管理以及标签管理等。 初始化和配置: 1. 要在当前目录下创建一个新的Git代码库,可以使用命令...

    git简单使用参考手册

    ### git简单使用参考手册 #### 一、Git简介 ##### 1.1 产生历史 Git作为当前全球范围内最先进的分布式版本控制系统,其诞生背景颇具传奇色彩。1991年,Linus Torvalds创立了开源操作系统Linux。随着时间的推移,...

    程序员git简单使用方法

    本教程将简要介绍Git的基本使用方法,帮助初学者快速上手。 1. **安装Git**: 首先,你需要在计算机上安装Git。访问Git官方网站(https://git-scm.com/)下载适合你操作系统的安装包,按照提示完成安装。 2. **配置...

    SVN和Git简单使用文档

    而"svn和git的简单使用.pptx"很可能是对SVN和Git的对比,可能会涵盖两者的优缺点、工作流程差异、团队协作策略等内容。 **SVN与Git的对比** - **集中式 vs 分布式**:SVN是集中式,所有版本信息存储在中央服务器;...

    git简单使用文档.docx

    git简单使用文档

    git 使用简易指南

    Git是目前广泛使用的版本控制系统,为程序员提供了方便的代码版本管理功能。本指南将介绍Git的基本使用方法,帮助读者快速掌握Git的...以上便是git使用的简易指南,希望能帮助您快速上手Git,轻松进行代码版本的管理。

    Git使用手册.pdf

    首先,安装Git非常简单,可以从Git官方网站(https://git-scm.com/downloads)下载对应操作系统的版本,并按照默认设置进行安装。安装完成后,可以通过启动Git Bash来验证安装是否成功,这是一个类似于命令行的窗口...

    Git 简易指南.pdf

    通过以上介绍,我们可以看到《Git简易指南》覆盖了从安装Git、创建和检出仓库、基本的工作流操作到高级功能如分支管理和标签使用的方方面面。这份指南不仅适合Git新手,对于有一定经验的开发者来说也是很好的参考...

    git命令行使用教程-Git简易的命令行入门教程

    Git 命令行使用教程 - Git 简易的命令行入门教程 Git 是当今最流行的版本控制系统之一,它允许开发者对代码进行版本控制、协作和追踪修改记录。 Git 命令行使用教程旨在帮助初学者快速掌握 Git 的基本命令和使用...

    git的使用说明

    - **简单的设计**:设计应该简洁明了,易于理解和使用。 - **非线性开发模式的支持**:支持数千个并行开发分支,方便多人协作。 - **完全分布式**:每个用户都有一个完整的版本库副本,可以离线工作。 - **管理大...

    GIT使用简单说明

    概述了GIT的简单使用,方便新手操作;重点描述了TortoiseGit插件的配合使用!

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

    Git 是一个广泛应用于软件开发领域的开源分布式版本控制系统,它的核心优势在于速度、简单的设计以及对非线性开发模式的强大支持。Git 不仅提供了一个安全、高效的代码管理环境,还允许开发者在本地创建和维护版本库...

    git使用手册.doc

    ### Git使用手册精要 #### 一、Git简介与版本控制系统概念 **Git** 是一款全球范围内使用最为广泛且先进的分布式版本控制系统。它能够自动记录每次文件的改动情况,包括文件的添加、修改以及删除等操作。对于软件...

    自己编写Git:使用.NET Core的Git的简单实现

    现在,我们将探索如何使用.NET Core来实现一个简单的Git系统。 首先,理解Git的基本工作原理至关重要。Git存储的是文件内容的快照,而非差异。每次提交时,Git会创建一个新的树对象,该对象包含了文件系统中每个...

    Tortoise Git快速使用指南

    使用 TortoiseGit 创建新库非常简单。右键点击要创建库的文件夹,选择 “Git Create repository here”,然后按照提示操作。添加文件和文件夹也非常方便,右键点击要添加的文件或文件夹,选择 “Git Add” 即可。 ...

    git使用详细步骤

    创建一个版本库非常简单,使用以下命令:`git init`,这时候你当前目录下会多了一个 .git 的目录,这个目录是 Git 来跟踪管理版本的,没事千万不要手动乱改这个目录里面的文件,否则,会把 Git 仓库给破坏了。...

Global site tag (gtag.js) - Google Analytics