Git入门
Git
版本控制
什么是版本控制
版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。
简单来说就是用于管理多人协同开发项目的技术
常见版本控制工具
-
Git
-
SVN
-
CVS
-
VSS
-
TFS
-
Visual Studio Online
Git于SVN应用最广泛,最流行
本地版本控制
记录文件每次的更新,可以对每个版本做一个快照,或是补丁记录,适合个人用,如RCS
集中版本控制
所有的版本数据都放在服务器上,协同开发者从服务器上同步更新或上传自己的修改
所有的版本数据都在服务器上,用户的本地只有自己以前所同步的版本,如果不联网,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支工作。而且数据全都保存在单一服务器上,有很大风险服务器会损坏,这样就会丢失所有数据,所以要定期备份。
代表:SVN
分布式版本控制
每个人拥有全部代码,有安全隐患!
所有的版本信息仓库同步到本地的每个用户,这样就可以在本地查看所有的版本历史,可以离线在本地提交,只需在联网时push到相应服务器或者其他用户那里。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设设备没有问题,就可以恢复所有数据。但这增加了本地存储空间的占用
Git的安装和配置(windows)
Git的安装
官网下载太慢,这里推荐使用淘宝的镜像淘宝下载镜像
下载对应自己电脑的.exe文件,之后无脑安装
安装之后开始菜单中会有git项,下面有三个程序
Git Bash:unix于linux风格的命令行,使用最多,推荐最多
Git CMD:Windows风格的命令行
Git GUI:图形化界面的Git,不推荐使用
Git的的必要配置
先在开始页面打开Git Bash
输入 git config --system --list 即会显示出git当前的系统配置
而输入 git config --global --list 会显示用户配置,而刚安装好的git,没有用户配置
所以接下来我们要给自己的git添加用户配置
user.name 后面跟上你设置的用户名,要加上双引号
user.email 为你要设置的邮箱,可不加双引号
没有报错,即配置成功
这时我们C盘用户配置文件中会多出一个.gitconfig文件,打开后就是我们刚才添加的配置
Git基本理论(核心)
工作区域
- Workspace:工作区,平时存放代码的地方
- Index/Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件
- Repository:仓库区(本地仓库),安全存放数据的地方,有你提交的所有版本数据,其中HEAD指向最新入库版本
- Remote:远程仓库,托管代码的服务器
工作流程
git的一般工作流程是这样的:
- 在工作目录中添加、修改文件; git add .
- 将需要进行版本控制的文件放入暂存区 git commit
Git 项目搭建
创建工作目录与常用指令
创建本地仓库的方式有两种:
- 创建全新的仓库
- 克隆远程仓库
创建全新的仓库
在需要用git管理的项目的根目录下打开Git Bash
# 在当前目录创建一个Git代码库
$ git init
这是你的目录下回多出一个隐藏的.git文件
克隆远程仓库
我们可以先到github或者gitee上找到你中意的仓库,复制这个仓库的url
这里我们先找一个空文件夹
同样用Git Bash打开
使用命令
git clone +url
这里我就成功克隆了一个仓库
打开文件夹一看
这里已经多了一个文件夹了
Git的文件操作
文件的4种状态
- Untracked:未跟踪,此文件在文件夹种,但并没有加入到git库,不参与版本控制,通过git add状态变为Staged
- Unmodify:文件已经入库,未修改,这种类型的文件有两种去处,被修改变为Modified,如果使用git rm移出版本库,成为Untracked文件
- Modified:文件已经入库,且仅作了修改,这种类型的文件有两个去处,通过git add状态变为Staged,使用git checkout则丢弃修改,返回Modified状态。git checkout是从库中取出文件,覆盖当前修改!
- Staged暂存状态,执行git commit
使用码云
注册登录和设置
略
设置本机绑定SSH公钥,实现免密码登录
- 生成公钥
# C:\Users\Administrator\.ssh 目录
# 生成公钥
ssh-keygen -t rsa
- 把公钥添加添加到码云账户中
- 使用码云创建一个自己的仓库
IDEA集成Git
- 创建一个项目
- 将仓库中的git文件复制粘贴到项目目录下
- 这时IDEA就会发生一些变化
Git分支
Git的分支平时是平行的,可以同时存在多个版本
如果一个文件在合并时冲突了,可以选择保留
一般master分支要保持稳定,一般情况下不在上面工作,