GIT

  • Git简介
  • Git与SVN的区别
  • Git的优势
  • Git的功能
  • Git的安装
  • Git的结构
  • GIT命令行操作
  • 本地库操作
  • 本地库初始化
  • 设置签名
  • 基本操作
  • 状态查看
  • 添加
  • 提交
  • 查看历史记录
  • 分支管理
  • 什么是分支
  • 分支操作
  • GitHub
  • 账号信息
  • 创建远程库
  • 创建远程库地址别名
  • 推送
  • 克隆


Git简介

Git是一个免费的开源 分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有内容。

Git易于学习, 占地面积小,具有闪电般的快速性能。它具有诸如Subversion,CVS,Perforce和ClearCase之类的SCM工具,具有廉价的本地分支,方便的暂存区域和 多个工作流等功能。

git 仓库和项目 git仓库类型_svn

Git与SVN的区别

Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。

Git 与 SVN 区别点:

1、Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。

2、Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。

3、Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。

4、Git 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。

5、Git 的内容完整性要优于 SVN:Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

Git的优势

  • 大部分操作在本地完成,不需要联网
  • 完整性保证
  • 尽可能添加数据而不是删除或修改数据
  • 分支操作非常快捷流畅
  • 与Linux命令全面兼容

Git的功能

从一般开发者的角度来看,git有以下功能:
1、从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。
2、在自己的机器上根据不同的开发目的,创建分支,修改代码。
3、在单机上自己创建的分支上提交代码。
4、在单机上合并分支。
5、把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。
6、生成补丁(patch),把补丁发送给主开发者。
7、看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。
8、一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。

Git的安装

git 仓库和项目 git仓库类型_git_02

git 仓库和项目 git仓库类型_git_03


git 仓库和项目 git仓库类型_git_04


git 仓库和项目 git仓库类型_svn_05


git 仓库和项目 git仓库类型_svn_06


git 仓库和项目 git仓库类型_svn_07


git 仓库和项目 git仓库类型_git_08

Git的结构

git 仓库和项目 git仓库类型_开发者_09

GIT命令行操作

本地库操作

本地库初始化

命令:git init效果:

git 仓库和项目 git仓库类型_git_10

设置签名

  • 形式:
    用户名:XXX
    Email 地址:XXX@XXX.com
  • 作用:区分不同开发人员的身份
  • 辨析:这里设置的签名和登录远程库(代码托管中心)的账号、密码没有任何关系。
  • 命令
  • 项目级别/仓库级别:仅在当前本地库范围内有效
  1. git config user.name XXX
  2. git config user.email [XXX@XXX.com]
  3. 信息保存位置:./.git/config 文件
  • 系统用户级别:登录当前操作系统的用户范围
  1. git config --global user.name chenyan
  2. git config --global inlett@class.com
  3. 信息保存位置:~/.gitconfig 文件

git 仓库和项目 git仓库类型_git_11

- **级别优先级**

1. 就近原则:项目级别优先于系统用户级别,二者都有时采用项目级别的签名
2. 如果只有系统用户级别的签名,就以系统用户级别的签名为准
3. 二者都没有不允许

基本操作

状态查看

git status 查看工作区、暂存区状态

添加

git add [file name] 将工作区的“新建/修改”添加到暂存区

提交

git commit -m "commit message" [file name]

将暂存区的内容提交到本地库

查看历史记录

git log

分支管理

什么是分支

在版本控制过程中,使用多条线同时推进多个任务。

git 仓库和项目 git仓库类型_git 仓库和项目_12


4.2.2. 分支的好处

同时并行推进多个功能开发,提高开发效率

各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任 何影响。失败的分支删除重新开始即可。

分支操作

创建分支:git branch [分支名]

查看分支:git branch -v

切换分支:git checkout [分支名]

git 仓库和项目 git仓库类型_git 仓库和项目_13


合并分支:

第一步:切换到接受修改的分支(被合并,增加新内容)上 git checkout [被合并分支名]

第二步:执行 merge 命令 git merge [有新内容分支名]
解决冲突:

冲突的表现

git 仓库和项目 git仓库类型_git_14

冲突的解决

第一步:编辑文件,删除特殊符号

第二步:把文件修改到满意的程度,保存退出

第三步:git add [文件名]

第四步:git commit -m “日志信息”

注意:此时 commit 一定不能带具体文件名

GitHub

账号信息

GitHub 首页就是注册页面:https://github.com/

岳不群的GitHub账号

Email 地址:yuebuqun@aliyun.com GitHub账号:yuebuqun@aliyun.com

令狐冲的GitHub账号

Email 地址:linghuchong@aliyun.com GitHub账号:linghuchong@aliyun.com

东方不败的GitHub账号

Email地址:dongfangbubai@aliyun.com GitHub账号:dongfangbubai@aliyun.com

创建远程库

git 仓库和项目 git仓库类型_git_15


git 仓库和项目 git仓库类型_git 仓库和项目_16

创建远程库地址别名

git remote -v 查看当前所有远程地址别名

git remote add [别名] [远程地址]

推送

git push [别名] [分支名]

克隆

git origin [远程地址]

效果:

完整的把远程库下载到本地
创建 origin 远程地址别名
初始化本地库