【Git】介绍与概述
版本控制工具应该具备的功能?
协同修改
多人并行不悖的修改服务器端的同一个文件。
数据备份
不仅保存目录和文件的当前状态,还能够保存每一个提交过的历史状态。
版本管理
在保存每一个版本的文件信息的时候要做到不保存重复数据,以节约存储空间,提高运行效率。
这方面 SVN 采用的是增量式管理的方式,而 Git 采取了文件系统快照的方式。
权限控制
对团队中参与开发的人员进行权限控制。
对团队外开发者贡献的代码进行审核——Git 独有。
历史记录
查看修改人、修改时间、修改内容、日志信息。
将本地文件恢复到某一个历史状态。
分支管理
允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率
版本控制简介
版本控制
工程设计领域中使用版本控制管理工程蓝图的设计过程。
在 IT 开发过程中也可以使用版本控制思想管理代码的版本迭代。
版本控制工具
思想:版本控制
实现:版本控制工具
回顾Linux基本指令:
- 切换当前的工作路径 cd
cd 绝对路径
cd 从当前路径访问的某一下级目录
cd .. 【回退上一级目录】
如果像这样带有空格的目录,使用斜杠进行转义处理
- 显示当前的绝对路径
pwd
【但是这个GIT终端自动提供了绝对路径显示,所以这个命令显的很鸡肋了】
- 清空控制台消息 clear
clear
- 查看历史命令记录
history
查看最近使用的命令,参数数字表示最近的个数限制
history 数字
- 展示当前目录的所有项
dir
ll
ls
使用DIR
使用LL
使用LS
- 创建文件
touch 文件名
- 创建目录
mkdir 目录名
- 删除文件或者目录
rm -rf 文件名或者目录名
- 查看帮助手册【全是英文看了也没用】
help
【在Windows上写Linux命令,这感觉真奇妙】
但是有一点值得注意,就是如果我们支持了Linux的命令,
也就意味着可以像Linux一样解压那些只有在Linux才可以被访问的压缩文件或者包文件
或者运行。。。
Git 原理概念:
- 工作区:【Working Directory】
- 暂存区:【Stage / Index】
- 版本库:【Repository Git Directory】
仓库搭建:
- 搭建本地仓库:
git init
或者指定一个目录位置进行仓库初始化
但是默认是D盘这个仓库为一个主分支
【如果你不喜欢放在这里的仓库,你完全可以删除掉】
在这个初始化的仓库中不会显示初始化内容
可以点击资源管理器的【查看】
然后点击【隐藏的项目】,就会发现一个.git的隐藏文件
里面是关于这个仓库的一些配置信息
第二种方式是使用克隆,下载远程仓库到本地
git clone [url]
文件的4中状态:
- 1、Untracked 未跟踪
- 2、Unmodify 未被修改
- 3、Modified 文件已修改
- 4、Staged 暂存状态
上传仓库:
git add 文件名或者目录 【添加至暂存区】
git commit 【把暂存区文件提交版本区,本地库】
git push 【把本地库的文件通过协议传输至远程仓库】
我先放入了一个装有文件的目录
执行添加所有操作
这个仓库目录下所有的东西都会被添加到暂存区
这些文件会被标识成绿色的状态
git add . 添加所有文件
这时我们再新创建一个文件,再次查看状态时
就会发现新的文件是红色标识的,这表示没有被添加的文件,未跟踪的状态
执行commit,添加到本地仓库
记住使用-m添加提交信息
git commit -m 提交信息
再次查看状态,发现被添加的文件全部提交到了本地仓库
为被跟踪的文件不会被提交
文件忽略选择
一些文件我们不希望被git上传
有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等
在主目录下建立".gitignore"文件,此文件有如下规则:
-
忽略文件中的空行或以井号(#)开始的行将会被忽略。
-
可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,...})代表可选的字符串等。
-
如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
-
如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。
-
如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。
#为注释 *.txt #忽略所有 .txt结尾的文件,这样的话上传就不会被选中! !lib.txt #但lib.txt除外 /temp #仅忽略项目根目录下的TODO文件,不包括其它目录temp build/ #忽略build/目录下的所有文件 doc/*.txt #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt