GIT学习笔记(一)

由于之前配过CSV使用过SVN,刚接触GIT时不能区分GIT与前类版本控制系统之间的区别,使用对SVN的了解来试图直接使用GIT。但其实两者之间后较大的区别,他们功能相同,实现方式却差异很大。
1.部署差异:
1.1.集中式版本控制系统
 SVN与CSV同属于集中式版本控制系统,所谓集中式即进行版本控制权限在服务器上,服务器保存所有文件的修订版,各开发终端只是将服务器上最新的修订版取回,然后提交更改后的版本。终端并不保存文件的所有修订版。
 示意图:
    
 这种方式对系统稳定性要求较高,因为只有服务器存储了一个完整的版本。
1.2 分布式版本控制系统
 GIT属于分布式版本控制系统,顾名思义,分布式即各终端都参与到整个版本控制系统中来。开发终端保存的不是最新版本的镜像,而是整个版本库,是整个版本控制系统的完整备份。因此每次加入一个已有的代码库时使用的是clone【克隆】操作。
 示意图:
 
2. 存储差异
2.1 差异存储(CVS,SVN)
 CVS,SVN这类版本控制系统中,各版本存储的是修改后的文件与原之间的差异信息,每次记录文件内容的具体哪个部分发生了什么变化。

2.2 快照存储
 GIT则只关心文件的整体变化,在每次版本变化时将此时的文件状态做一个快照,只保存指向这个快照的索引信息。

3. 对网路的依赖
 使用CVS和SVN需时时连接到远程服务器,而git则是在本地维护一个版本库,所以提交等都在本地进行,除非将更改一次性push到远程服务器,否则都不需要连接网络。

一、安装配置(windows)
 git 拥有针对各个平台的版本。windows下的有一个模拟shell的版本 msysgit 【http://code.google.com/p/msysgit/】在此下载最新版本。
 git的安装过程就是经典的windows的下一步点击过程,如果没有特殊选择,使用默认选项即可。
 git安装之后需要做几个配置。配置文件均在msysgit安装目录中etc下。

1 shell终端的配置
 msysgit安装之后会在开始菜单里进入shell终端的目录。此shell terminal 使用ls命令时不能列出中文文件。
 为了让ls能够列出中文文件,需要加上 --show-control-char 选项,--color=auto 选项时目录和文件有颜色区分。为了可以直接使用ls达到我们所需效果,可在git-completion.bash文件中加入:
  alias ls='ls --show-control-char --color=auto'
  alias ll='ls -al --show-control-char --color=auto'
 给ls命令定义别名

2 git的配置 gitconfig
 
[gui]
 encoding=utf-8
# 设置成代码库一样的编码,以便在git gui中正常显示中文
[i18n]
 commitencoding=GB2312
#设置commit说明的编码,windows一般是gb2312
[user]
 email = jjuan_flake@sina.com
 name = kunjuan
#说明提交用户

3 配置输入终端 inputrc
  
  set output-meta on
  set convert-meta off 
#使得git bash终端可输入中文

 

二、git的使用

1. git init
 在本地建立版本库时使用此命令处事化一个代码版本控制库
2. git clone [url] [myname]
 在本地克隆一个已有的网络上的版本库,url协议可以是git,https等。如果加了myname则重命名版本库的名字为myname,否则使用原名。使用clone命令时无需在本地先为代码库建立一个目录,执行clone后当前目录自动生成代码库的目录。
 类似于svn checkout,只是此命令克隆的是整个版本库
3.  git add 
 把新建的一个或多个文件设定成跟踪状态,git开始跟踪这个文件的状态信息。将以跟踪的修改文件暂存。
4. git commit [-m '注释']
 提交暂存文件到本地代码库
5. git status 
 查看本分之中文件跟踪状态
6. git pull
 用远程库更新本地库
7. git checkout 
 git checkout 分支名:切换到某分支下
 git checkout 文件名:更新本文件到上次提交的版本
 checkout切换分支后,此事文件状态是此分支的,编辑某个文件,则编辑的只是这个分支的文件状态,不会碰触其他分支的本文件。在此文件commit之前checkout到另外的分支后,还是可以看见此文件更改后的信息,在更改的分支commit之后,则切换回之前的分支后就看不见另一个分支更改的部分了。
8. git branch 
 不加名字即查看所有分支,列表中有*的是当前分支
 加名字则新建一个分支,
  -b 则 新建并切换至此分分支
9.  git merge branchname
  将branchname合并到本分支
git的工作流程
  检出远程版本库到本地=》[新增文件(设置跟踪)]=》修改=》暂存【add】=》提交到本地代码库的本分支【commit】=》合并的master分支=》在master分支中推到服务器。

分支
 一个指向快照的指针。

时间: 2024-08-05 19:48:31

GIT学习笔记(一)的相关文章

Git 学习笔记

  Git/'ɡɪt/,  Linus的第二个伟大作品.Git这个词有点儿意思,Linus自嘲说 "I'm an egotistical bastard,  and I name all my projects after myself. First Linux, now Git. "  感叹我生不逢时,错过了版本控制的"史前黑暗"时代,刚刚接触版本控制,Linus就站在前边,笑嘻嘻的说:"版本控制? 什么是版本控制 .. ".真希望Linus身

Git学习笔记(二)

基本命令:  查看提交历史      git log  版本回退            git reset  查看每一次的命令 git reflog     具体步骤:   添加一句话到readme.txt中,并提交到Git库中.              .                readme.txt在Git中目前有三个版本: 按提交时间先后顺序排列如下: 第一个:wrote a readme.txt 第二个:add distrubuted 第三个:add difficulties 如

Git学习笔记

创建版本库 1 初始化一个Git仓库:git init. 2 添加文件到Git仓库,分两步: 第一步,git add <file>,可反复使用,也可一次添加多个文件. 第二部,git commit -m "commit description",完成. 3 掌握工作区的状态:git status. 4 如果git status告诉你有文件被修改过,用git diff可以查看修改内容. 时光机穿梭 版本回退 1 HEAD指向的版本就是当前版本,Git允许我们再版本的历史之间穿

git学习笔记之撤消操作

任何时候,你都有可能需要撤消刚才所做的某些操作.接下来,我们会介绍一些基本的撤消操作相关的命令.请注意,有些撤销操作是不可逆的,所以请务必谨慎小心,一旦失误,就有可能丢失部分工作成果. 修改最后一次提交 有时候我们提交完了才发现漏掉了几个文件没有加,或者提交信息写错了.想要撤消刚才的提交操作,可以使用 --amend 选项重新提交:     $ git commit --amend 此命令将使用当前的暂存区域快照提交.如果刚才提交完没有作任何改动,直接运行此命令的话,相当于有机会重新编辑提交说明

git的学习笔记整理

Git学习较好的网址:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001373962845513aefd77a99f4145f0a2c7a7ca057e7570000 开源中国的git站点:http://git.oschina.NET/oschina/git-osc/wikis/Home   msysgit是Windows版的Git,从http://msysgit.githu

友善之臂Mini6410之Android开发学习笔记(4)-EEPROM Demo

友善之臂Mini6410之Android开发学习笔记源码同步更新,请使用git工具进行同步.关于Git工具更多信息,请参考:http://progit.org/book/zh/ git clone https://code.google.com/p/androiddemoformini6410/ EEPROMActivity.java package com.mini6410.EEPROM; import android.app.Activity; import android.os.Bundl

API Demos 2.3 学习笔记

API Demos 2.3 学习笔记 Doc和Pdf版本同步更新,请使用git工具进行同步.关于Git工具更多信息,请参考:http://progit.org/book/zh/ git clone https://code.google.com/p/apidemo/  或者 git clone git://github.com/snowdream/apidemo.git 由于笔者才疏识浅.时间匆忙,书中难免出现错误.缺点,欢迎大家批评指正.联系方式:yanghui1986527#gmail.co

友善之臂Mini6410之Android开发学习笔记(1)-LED Demo

友善之臂Mini6410之Android开发学习笔记源码同步更新,请使用git工具进行同步.关于Git工具更多信息,请参考:http://progit.org/book/zh/ git clone https://code.google.com/p/androiddemoformini6410/ LEDActivity.java package com.mini6410.LED; import com.friendlyarm.AndroidSDK.HardwareControler; impor

jQuery学习笔记之DOM操作、事件绑定(2)

jQuery学习笔记之DOM操作.事件绑定(2) --------------------学习目录------------------------ 4.DOM操作 5.事件绑定 源码地址: https://github.com/iyun/jQueryDemo.git --------------------学习目录------------------------ 4.DOM操作(节点增删改查) 节点查找:节点分为三种类型:元素节点.属性节点.文本节点 创建节点 创建元素节点 使用 jQuery