1.Git安装与配置
![请添加图片描述](https://img-blog.csdnimg.cn/c9121fa73b834c518510bd9166fd018c.png)
1.1 什么是Git
![请添加图片描述](https://img-blog.csdnimg.cn/866d7a28027549bb923892b222e76c23.png)
作者:Linux和Git之父李纳斯·托沃兹(Linus Benedic Torvalds)1969、芬兰
优点:
- 适合分布式开发,强调个体。
- 公共服务器压力和数据量都不会太大。
- 速度快、灵活。
- 任意两个开发者之间可以很容易的解决冲突。
-
离线工作。
缺点:
- 模式上比SVN更加复杂。
- 不符合常规思维。
- 代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
官网: https://git-scm.com/
源码: https://github.com/git/git/
1.2 搭建Git工作环境
1.2.1 下载Git
打开 git官网,下载git对应操作系统的版本
![请添加图片描述](https://img-blog.csdnimg.cn/becbbde6f45e4617b94b5954a95acc42.png)
1.2.2 安装
无脑下一步
![请添加图片描述](https://img-blog.csdnimg.cn/1af76e579fbf4cf9b6a408beebc45a33.png)
![请添加图片描述](https://img-blog.csdnimg.cn/fdfaad8c526e4f57aa26743cc4ba7d3a.png)
- **Git Bash:**Unix与Linux风格的命令行,使用最多,推荐最多
![请添加图片描述](https://img-blog.csdnimg.cn/d6100cd0d95247dba6ef6432059ef1cc.png)
1.2.4 Linux与Mac OS安装Git
Linux安装Git:sudo apt-get install git 命令行就可以安装了。
Mac OS安装Git: https://git-scm.com/download/mac,下载双击.pkg安装
1.2.5 Bash基本操作命令
命令名称 |
英文 |
作用 |
ls |
list |
查看当前目录下的内容 |
pwd |
print work directory |
查看当前所在目录 |
cd[目录名] |
change directory |
切换目录 |
mkdir[目录名] |
make directory |
创建目录 |
touch |
touch |
创建文件 |
rm[文件名] |
remove |
删除指定文件 |
cp[源文件或者目录] [目的文件或者目录] |
cpoy |
复制 |
mv[源文件或者目录] [目的文件或者目录] |
move |
移动 |
reset |
reset |
重置终端 |
clear |
clear |
清屏 |
history |
history |
查看历史命令 |
1.3 Git配置 - git config
1.3.1、查看配置 - git config -l
![请添加图片描述](https://img-blog.csdnimg.cn/8799fbad06d747bcaf10b9c138ba6e5a.png)
查看不同级别的配置文件:
#查看系统config
git config --system --list
#查看当前用户(global)配置
git config --global --list
#查看当前仓库配置信息
git config --local --list
1.3.2 设置用户名与邮箱(用户标识,必要)
$ git config --global user.name "qf" #名称
$ git config --global user.email qfwork@outlook.com #邮箱
2.Git理论基础
2.1 工作区域
Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)。如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域。文件在这四个区域之间的转换关系如下:
![请添加图片描述](https://img-blog.csdnimg.cn/87a9391706fd4a48bd09ceeddb40bd56.png)
- Workspace:工作区,就是你平时存放项目代码的地方
- Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
- Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
- Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换
2.2 工作流程
git的工作流程一般是这样的:
1、在工作目录中添加、修改文件;
2、将需要进行版本管理的文件放入暂存区域;
3、将暂存区域的文件提交到git仓库。
因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)
![请添加图片描述](https://img-blog.csdnimg.cn/a5b4931c3e0a4a6ea130856798db9fbe.png)
2.3 图解教程
个人认为Git的原理相比别的版本控制器还是复杂一些的,有一份图解教程比较直观:
图解教程英文原版
图解教程中文版
![请添加图片描述](https://img-blog.csdnimg.cn/9f996c8b11544b9ebb26d63e2b311bf7.png)
3 Git操作
3.1 创建工作目录与常用指令
工作目录(WorkSpace)一般就是你希望Git帮助你管理的文件夹,可以是你项目的目录,也可以是一个空目录,建议不要有中文。
日常使用只要记住下图6个命令:
![请添加图片描述](https://img-blog.csdnimg.cn/278c6530b85b48f0a4faeb27265c9ff1.png)
3.2 获得Git仓库
创建本地仓库的方法有两种:一种是创建全新的仓库,另一种是克隆远程仓库。
![请添加图片描述](https://img-blog.csdnimg.cn/375add81c4d64135a6897115b266927f.png)
3.2.1 创建全新仓库
# 在当前目录新建一个Git代码库
$ git init
![请添加图片描述](https://img-blog.csdnimg.cn/02b0003bb75e4f25ba5a4975a604a5c3.png)
3.2.2 克隆远程仓库
![请添加图片描述](https://img-blog.csdnimg.cn/de7276e99a194e078f274da03db12a52.png)
![请添加图片描述](https://img-blog.csdnimg.cn/483e9bac719c453fbaaba8203e922632.png)
- 克隆
![请添加图片描述](https://img-blog.csdnimg.cn/8b6f434b44cc450282b8def9e430194d.png)
3.3 Git文件操作
版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在还不想提交的文件,或者要提交的文件没提交上。GIT不关心文件两个版本之间的具体差别,而是关心文件的整体是否有改变,若文件被改变,在添加提交时就生成文件新版本的快照,而判断文件整体是否改变的方法就是用SHA-1算法计算文件的校验和。
3.3.1 文件4种状态
-
Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过
git add
状态变为Staged
.
-
Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为
Modified
. 如果使用git rm
移出版本库, 则成为Untracked
文件
-
Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过
git add
可进入暂存staged
状态, 使用git checkout
则丢弃修改过, 返回到unmodify
状态, 这个git checkout
即从库中取出文件, 覆盖当前修改
-
Staged: 暂存状态. 执行
git commit
则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify
状态. 执行git reset HEAD filename
取消暂存, 文件状态为Modified
3.3.2 查看文件状态
#查看指定文件状态
git status [filename]
#查看所有文件状态
git status
3.3.3 添加文件与目录
![请添加图片描述](https://img-blog.csdnimg.cn/03334d37ff1844ce9b8587e7e467d32e.png)
![请添加图片描述](https://img-blog.csdnimg.cn/d06052da263246629d4f7fe9ada9b36b.png)
3.3.4 移除文件与目录(撤销add)
#直接从暂存区删除文件,工作区则不做出改变
git rm --cached <file>
![请添加图片描述](https://img-blog.csdnimg.cn/160e3ff87d5046c7ae71d3889cd36829.png)
3.3.5 免密登录
- 打开cmd,执行ssh-keygen命令,三处选项直接回车
![请添加图片描述](https://img-blog.csdnimg.cn/ee021388841942f2bedbcfe6b59a76f8.png)
![请添加图片描述](https://img-blog.csdnimg.cn/0b3d0e737d1b4dda90e335621b3e2e65.png)
![请添加图片描述](https://img-blog.csdnimg.cn/ccb170f620764ac6a8f0c4b4e8f37de2.png)
![请添加图片描述](https://img-blog.csdnimg.cn/442dcf6b7fba48248cee2a1e2a578ec0.png)
![请添加图片描述](https://img-blog.csdnimg.cn/4a77c2f421ab4515a2476fb1ed04c82b.png)
3.3.6 提交到远程仓库
![请添加图片描述](https://img-blog.csdnimg.cn/ee88537c9503414da92a035d4c39792c.png)
![请添加图片描述](https://img-blog.csdnimg.cn/f824b247c63c4835acd046203dd4da4a.png)
总结
无分支工作流程如下:
- 克隆项目:git clone url地址
- 新增或修改项目(工作区)
- 将新增或修改的项目添加到暂存区(git add .)
- 将暂存区的项目提交到本地仓库(git commit -m “注释”)
-
每次上传项目到远程仓库之前,先重新拉取项目,避免冲突(git pull)
- 将本地仓库文件提交到远程仓库(git push)