Git的使用
git十分简单!
学习git之前,我们要明白一个概念——版本控制
版本控制Reversion control
什么是版本控制 版本迭代,新的版本!版本管理
版本控制(Reversion control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。
-
实现跨区域多人协同开发
-
追踪和记载一个或者多个文件的历史记录
-
组织和保护你的源代码和文档
-
统计工作量
-
并行开发,提高开发效率
-
跟踪记录整个软件的开发过程
-
减轻开发人员的负担,节省时间,同时减低人为错误
简单说就是用于管理多人协同开发项目的技术
没有进行版本控制或者控制本身缺乏正确的流程管理,在软件开发过程中将会引入很多问题,比如软件代码的一致性,软件内容的冗余,软件过程的事务性,软件开发过程中的并发性,软件源代码的安全性,以及软件的整合等问题。
我们迫切需要一个版本控制工具。
因此多人开发必须使用版本控制,反则代价很大!
常见的版本控制工具
我们学习的东西一定是当下最流行的!
-
Git
-
SVN
-
CVS
-
VSS
-
TFS
-
Visual Studio Online
版本控制分类
1.本地版本控制
记录文件每次更新,可以对每个版本做一个快照,或是记录补丁文件,适合个人用,如RCS。
2.集中版本控制 SVN
所有版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改。
所有的版本数据都存在服务器上,用户的本地只有自己以前所同步的版本,如果不连网的话,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支工作。而且,所有数据都保存在单一的服务器上,有很大风险这个服务器会损坏,这样就会丢失所有的数据,当然可以定期备份。代表产品:SVN/CVS/VSS.
3.分布式版本控制Git
每个人都拥有全部的代码! 安全隐患
所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需连网时push到相应的服务器或其他用户那里。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题,就可以恢复所有的数据,但这增加了本地存储空间的占用。
不会因为服务器损坏或者网络问题,造成不能工作的情况!
Git与SVN最主要区别
SVN集中版本控制,员工联网上传公司的服务器。
Git是分布式版本控制系统,每个员工都有公司完整的服务器所有代码,而且可以不联网本地编译,如果要上传,只需可怜网上传即可。
Git协同的方法:比如自己电脑修改了文件A,另一个同事也修改了文件A,这时你把修改联网推送给对方,就可以互相看对方的修改了。Git可以直接看到更新了哪些代码和文件。
Git历史
Git的下载
去阿里镜像下载
https://npm.taobao.org/mirrors/git-for-windows/
下载对应的版本即可安装,无脑下一步即可。
启动Git
安装成功后开始菜单会有Git项,菜单下有3个程序:任意文件夹下右键也可以看到对应的程序。
Git Bash : Unix与Linux风格的命令行,使用最多,推荐最多
Git CMD : Windows风格的命令行
Git Gui : 图形界面的Git,不建议初学者使用,尽量先熟悉常用命令。
点Git Bash进入Linux命令。
1.Git Bash基本的Linux命令学习
cd :改变目录,比如我想进git的目录地址 cd /d/code/git这样回车就能进去了
cd .. 回退到上一个目录
pwd 显示当前所在的目录路径
ls(ll)都是列出当前目录中的所有文件,只不过ll列出的内容更详细
clear 清屏
rm+文件名 删除一个文件
mkdir 新建一个文件夹
rm -r +文件夹名 删除一个文件夹
history 查看操作历史
help 帮助
exit 退出
rest 重新初始化
Git的卸载
先卸载
直接反安装即可,我的电脑-高级设置-环境变量-删除Git的环境变量-打开控制面板直接卸载(or 360卸载)
Git环境配置
git配置
所有配置文件其实都保存在本地
查看配置 git config -l
设置用户名与邮箱(用户表示,必要)
当你安装Git后首先要做的事情是设置里的用户名称和e-mail地址。这很重要,因为Git每次提交都会使用该信息。他被永远的嵌入到了你的提交中。
git config --global user.name "熊乾坤" git config --global user.email 1355818157@qq.com
Git基本理论(核心)
-
所有的时间都需要源于这个理论
工作区域
Git本地有三个工作区域:工作目录(Working Directory)、暂存区(stage/index)、资源库(Repository)或Git Directory,如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域。文件哎这四个区域之间的转换关系如下。
-
Workspace:工作区,就是你平时存放项目代码的地方
-
Index/Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息。
-
Repository:仓库去(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新存入仓库的版本。
-
Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目中组合的一台电脑用于远程数据交换。//gitee码云
工作流程
Git工作流程一般是这样的:
1.在工作目录中添加、修改文件
2.将需要进行版本管理的文件放入暂存区域
3.将暂存区域的文件提交到git仓库
因此,git管理的文件有三种状态;已修改(modified),已暂存(Staged),已提交(committed)
Git项目搭建
创建工作目录与常见指令
本地仓库搭建
1.创建本地仓库的方式有两种:
一是创建全新的仓库
#在当前目录新建一个Git代码库(git bash ,用linux语句操作) git init
另一种是克隆远程仓库
git clone + gitee的克隆地址
这样就能完成开源网站下,把东西下载自己的文件夹下面。
查看文件状态
文件有四种状态。
-
Untracked:未跟踪。此文件在此文件夹中,并未在git库,不参与版本控制。可以通过
git add .
状态变为Staged。 -
Unmodify:文件已经入库,即版本库中的文件快照内容与文件夹中一致。这种类型的文件有两种去处,如果他被修改,而改编为Modified。如果使用 git rm 移除版本库,则便为Untracked文件。
-
Modified:文件已修改,仅仅是修改,并没有进行其他的操作这个文件也有两个去除,通过
git add .
可进入暂存Staged状态,使用git checkout 则丢弃修改过,返回到unmodify状态。这个git checkout即从库中取出文件,覆盖当前修改! -
Staged:暂存状态,执行git commit 则将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为Unmodify状态,执行
get reset HEAD filename
取消暂存,文件状态为Modified。
有如下命令
#查看指定文件状态 git status [filename] #查看所有文件状态 git status #添加所有文件到暂存区 git add . #提交暂存区中的内容到本地仓库 -m "提交信息" git commit -m "消息内容"
2.忽略文件
有时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等。
在主目录下简历 ".gitignore"文件,此文件有如下规则。
-
忽略文件中的空行和或以井号(#)开始的行将会被忽略
-
可以使用Linux通配符,例如星号(*)代表任意多个字符,问号(?)代表一个字符等等
-
如果名称最前面有一个感叹号(!)表示例外规则,将不被忽略
-
如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
-
如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)
#为注释 .txt #忽略所有 .txt结尾的文件,这样的话上传就不会被选中! !lib.txt #但是lib.txt除外 /temp #仅忽略项目根目录下的TODO文件,不包括其他目录temp build/ #会忽略build/目录下的所有文件 doc/*.txt #会忽略doc/notes.txt,但不包括 doc/server/arch.txt
使用码云Gitee
github是有墙的,比较慢,国内的话,我们一般使用gitee。公司中有时候会搭建自己的git服务
可以作为未来找工作的重要信息。
设置本机绑定SSH公钥,实现免密码登录!(免密码登录,这一步很重要,码云是远程仓库,我们平时工作在本地仓库)
#进入 C:\Users\ Adiministrator\ .ssh 目录
#生成公钥
再复制自己仓库的地址,进入Git bush 输入 git clone克隆到本地
使用IDEA集成Git
-
新建项目,绑定Git
将我们远程的git文件目录拷贝到项目(经典复制粘贴
-
修改文件,使用IDEA操作git
-
提交测试