Git

版本控制

版本控制(Version Control)

是一种在开发过程中我们对文件、目录或工程等内容的修改历史,方便查看和更改历史记录,备份以便回复以前版本的软将工程技术

常见的版本控制工具

  • Git
  • SVN( Subversion )
  • CVS(Concurrent Versions System)
  • VSS(Microsoft VISUAL sourceSafe)
  • TFS(Team Foundation Server)
  • Visual Studio Online

版本控制分类

1. 本地版本控制

记录文件每次的更新,可以对每个版本做一个快照,或者记录补丁文件。适用于个人。

图片说明

2. 集中版本控制

所有的版本数据都保存在服务器中,协同开发者从服务器上同步更新或上传自己的修改。

所有的版本数据凑存在服务器上,用户的本地只有自己以前所同步的版本。

  • 缺:不联网用户就看不到历史版本,也无法切换版本验证问题;有很大风险服务器出问题

例:SVN、CVS、VSS

3. 分布式版本控制 Git

所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有的版本历史,可以离线在本地提交,只需要在联网的时候push到相应的服务器或其他用户即可。

  • 优:由于每个用户保存的都是所有的历史版本,只要有一个用户的设备没有问题就可以恢复所有数据。

  • 缺:增加本地存储空间的占用

Git与SVN最主要区别

  • SVN是集中式版本控制系统。版本库是集中放在中央服务器,而工作用的是自己的电脑。

    • 首先从中央服务器得到最新的版本
    • 进行工作
    • 工作完成后推送到中央服务器
    • 必须联网!!!
  • Git是分布式版本控制系统。没有中央服务器,每个人电脑就是一个完整的版本库。

    • 不需要联网
    • 协同:A、B只需将各自修改推送给对方即可看到对方的修改
    • Git可以直接看到更新了哪些代码和文件

Git环境配置

常用的Linux命令

  1. cd :改变目录
  2. cd.. :回退到上级目录
  3. pwd : 显示当前所在目录路径
  4. ls(ll) :列出当前目录中的所有文件;ll更详细
  5. touch :新建一个文件
  6. rm : 删除一个文件
  7. mdkir : 新建一个文件夹(目录)
  8. rm -r :删除一个文件夹,
  9. mv 移动文件 mv A dir A
  10. reset :重新初始化终端/清屏
  11. clear :清屏
  12. history :查看命令历史
  13. help :帮助
  14. exit :推出
  15. :注释

Git配置

查看配置 git config -l

查看系统配置git config --system --list

查看全局配置git config --global --list

Git相关配置文件:

1)、Git\etc\ .gitconfig

2)、C:\Users\Administrator\ .gitconfig

设置用户名与邮箱(用户标识)

git config --global user.name "Rickduck" #名称
git config --global user.email "xxx" #邮箱

Git基本理论

Git的本地三个区域

  • 工作目录(Working Directory)

    • 工作区,平时存放项目代码的地方放
  • 暂存区(Stage/Index)

    • 暂存区,用于临时存放改动信息。本质上是一个文件,保存即将提交到的文件列表信息
  • 资源库(Repository/Git Directory)

    • 仓库区,安全存放数据的位置。里面有提交到所有版本的数据
    • HEAD 只想最新放入仓库的版本

远程Git仓库

  • Remote Directory
    • 远程仓库,托管代码的服务器

转换关系:

图片说明

Git工作流程

工作流程

  1. 在工作目录添加修改文件
  2. 将需要进行版本管理的文件放入暂存区域 (git add .)
  3. 将暂存区域的文件提交到git仓库 (git committ)

Git项目搭建

图片说明

方法一 : 创建本地仓库

创建一个新的仓库,需要用Git管理项目的根目录,执行:

# 在当前目录新建一个Git代码库
git init

方法二 :克隆远程仓库

# 克隆一个项目和它的整个代码历史(版本信息)
git clone [url]

Git文件操作

文件的4种状态

  • Untracked

    • 未跟踪,存在文件夹中但没有加入到git库中,不参与版本控制
    • 通过 git add状态变为staged
  • Unmodify

    • 文件已入库,未修改。即版本库中的文件快照内容与文件夹中完全一致
    • 如果被修改,变为Modified
    • 如果使用 git rm 移除版本库,则成为 Untracked文件
  • Modified

    • 文件已修改
    • 可通过 git add进入 staged 状态
    • 使用 git checkout (即从库中取出文件)则丢弃修改过,返回到 unmodify 状态
  • Staged

    • 暂存状态
    • 执行 git commit 则将修改同步到库中,文件变为Unmodify
    • 执行 git reset HEAD filename取消暂存,文件状态为Modified

查看文件状态

# 查看指定文件状态
git status [filename]

#查看所有文件状态
git status

# git add .                        添加所有文件到暂存区
# git commit -m    "message"        提交暂存区中的内容到本地仓库 -m 提交信息

忽略文件

某些如数据库文件、临时文件等不需要纳入版本控制中,可设置忽略文件,在提交的时候不会一起提交。

.gitignore文件

图片说明

使用码云

  1. 注册登录码云,完善个人信息
  2. 设置本机绑定SSH公钥,实现免密码登录
# 进入目录
# 生成公钥
ssh-keygen
  1. 将公钥信息public key 添加到码云账号中

IDEA集成Git

  1. 新建项目,绑定git
  • 将远程gitww唔见目录拷贝到项目即可
  1. 修改文件,使用IDEA操作git
  2. 提交测试