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分支中推到服务器。

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

目录
相关文章
|
3月前
|
Shell 网络安全 开发工具
Git学习笔记
Git学习笔记
79 1
Git学习笔记
|
7月前
|
Linux 网络安全 开发工具
Git学习笔记
Git学习笔记
56 0
|
8月前
|
Linux 网络安全 API
git常用命令学习笔记
git常用命令学习笔记
45 0
|
9月前
|
程序员 开发工具 git
搭建博客可能会用到的 Git 命令|学习笔记
搭建博客可能会用到的 Git 命令|学习笔记
|
10月前
|
算法 安全 Linux
git第n次学习笔记
git第n次学习笔记
71 0
|
12月前
|
项目管理 开发工具 git
Git学习笔记(三) git submodule
Git学习笔记(三) git submodule
124 0
|
12月前
|
缓存 开发工具 git
Git学习笔记(二) git stash
Git学习笔记(二) git stash
848 0
|
12月前
|
开发工具 git
Git学习笔记(一) 常用命令
Git学习笔记(一) 常用命令
104 0
|
12月前
|
缓存 Linux 程序员
【学习笔记之Linux】工具之make/Makefile与git
【学习笔记之Linux】工具之make/Makefile与git
172 0
|
开发工具 git 索引
Git学习笔记-详细使用教程
Git学习笔记-详细使用教程
Git学习笔记-详细使用教程

相关实验场景

更多