Git
Git概述
版本系统
SVN 是集中式版本控制系统,版本库是集中放在中央服务器的,而开发人员工作的时候,用的都是自己的电脑,所以首先要从中央服务器下载最新的版本,然后开发,开发完后,需要把自己开发的代码提交到中央服务器。
集中式版本控制工具缺点:服务器单点故障、容错性差
Git 是分布式版本控制系统(Distributed Version Control System,简称 DVCS) ,分为两种类型的仓库:
本地仓库和远程仓库:
- 本地仓库:是在开发人员自己电脑上的 Git 仓库
- 远程仓库:是在远程服务器上的 Git 仓库
工作流程
1.从远程仓库中克隆代码到本地仓库
2.从本地仓库中 checkout 代码然后进行代码修改
3.在提交前先将代码提交到暂存区
4.提交到本地仓库。本地仓库中保存修改的各个历史版本
5.修改完成后,需要和团队成员共享代码时,将代码 push 到远程仓库
Git安装
下载地址: https://git-scm.com/download
代码托管
Git 中存在两种类型的仓库,即本地仓库和远程仓库。那么我们如何搭建Git远程仓库呢?我们可以借助互联网上提供的一些代码托管服务来实现,其中比较常用的有 GitHub、码云、GitLab 等。
GitHub(地址:https://github.com/
)是一个面向开源 及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名 GitHub
码云(地址: https://gitee.com/
)是国内的一个代码托管平台,由于服务器在国内,所以相比于 GitHub,码云速度会更快
GitLab(地址: https://about.gitlab.com/
)是一个用于仓库管理系统的开源项目,使用 Git 作为代码管理工具,并在此基础上搭建起来的 web 服务
环境配置
安装 Git 后首先要设置用户名称和 email 地址,因为每次 Git 提交都会使用该用户信息,此信息和注册的代码托管平台的信息无关
设置用户信息:
- git config --global user.name “Seazean”
- git config --global user.email "[email protected]" //用户名和邮箱可以随意填写,不会校对
查看配置信息:
- git config --list
- git config user.name
通过上面的命令设置的信息会保存在用户目录下 /.gitconfig 文件中
本地仓库
获取仓库
-
本地仓库初始化
-
在电脑的任意位置创建一个空目录(例如 repo1)作为本地 Git 仓库
-
进入这个目录中,点击右键打开 Git bash 窗口
-
执行命令 git init
如果在当前目录中看到 .git 文件夹(此文件夹为隐藏文件夹)则说明 Git 仓库创建成功
-
-
远程仓库克隆 通过 Git 提供的命令从远程仓库进行克隆,将远程仓库克隆到本地
命令:git clone 远程 Git 仓库地址(HTTPS 或者 SSH)
-
生成 SSH 公钥步骤
- 设置账户
- cd ~/.ssh(查看是否生成过 SSH 公钥)user 目录下
- 生成 SSH 公钥:
ssh-keygen -t rsa -C "email"
- -t 指定密钥类型,默认是 rsa ,可以省略
- -C 设置注释文字,比如邮箱
- -f 指定密钥文件存储文件名
- 查看命令:cat ~/.ssh/id_rsa.pub
- 公钥测试命令:ssh -T [email protected]
工作过程
版本库:.git 隐藏文件夹就是版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等
工作目录(工作区):包含 .git 文件夹的目录就是工作目录,主要用于存放开发的代码
暂存区:.git 文件夹中有很多文件,其中有一个 index 文件就是暂存区,也可以叫做 stage,暂存区是一个临时保存修改文件的地方
文件操作
常用命令
命令 | 作用 |
---|---|
git status | 查看 git 状态 (文件是否进行了添加、提交操作) |
git add filename | 添加,将指定文件添加到暂存区 |
git commit -m 'message' | 提交,将暂存区文件提交到本地仓库,删除暂存区的该文件 |
git commit --amend | 修改 commit 的 message |
git rm filename | 删除,删除工作区的文件,不是仓库,需要提交 |
git mv filename | 移动或重命名工作区文件 |
git reset filename | 使用当前分支上的修改覆盖暂存区,将暂存区的文件取消暂存 |
git checkout filename | 使用暂存区的修改覆盖工作目录,用来撤销本次修改(危险) |
git log | 查看日志( git 提交的历史日志) |
git reflog | 可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录的操作) |
其他指令:可以跳过暂存区域直接从分支中取出修改,或者直接提交修改到分支中
- git commit -a 直接把所有文件的修改添加到暂存区然后执行提交
- git checkout HEAD -- files 取出最后一次修改,可以用来进行回滚操作