Git学习
参考:
廖雪峰git教程
狂神说git教程
1、版本控制(分布式版本控制)
版本迭代、版本管理器 ,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术
多人开发就必须要使用版本控制
常用的版本控制
本地版本控制:记录文件每次的更新,可以对每个版本做一个快照,eg: version3 -> version2 -> version1
集中版本控制:将版本数据全部上传到服务器上便于管理
分布式版本控制:
每个人都拥有全部的代码!安全隐患
所有版本信息仓库全部同步到本地的每个用户,所以可以在本地查看所有版本历史,可以离线在本地提交,只需在联网时push到相应的服务器或者其他用户那里。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。
不会因为服务器损坏或者网络问题,造成不能工作的情况
2、Git与SVN最主要区别
GIT | SVN |
---|
分布式版本控制系统 | 集中式版本控制系统 | 没有中央处理器,每个人电脑中都有一个完整版本库 | 版本库放在中央处理器中 | 工作的时候可以不联网 | 对网络带宽要求较高 | 版本的修改只需要用户间相互的推送 | 版本的修改需要用户和服务期间的推送 |
Git是目前世界上最先进的分布式版本控制系统
3、Linux和Git之父李纳斯·托沃兹(Linus Benedic Torvalds) 1969、芬兰,俩周开发!!!
4、git下载安装
官网下载安装慢的话,去找一个镜像
卸载git
先删除环境变量,再卸载
mac下安装git:
1)使用国内镜像地址安装Homebrew :输入以下命令
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
2)安装git
brew install git
3)安装好之后先设置用户名邮箱地址:
git config --global user.name “yourname”
git config --global user.email “youremail”
实际上就是下面文件中的内容
5、git
Git Bash:Unix与Linux风格的命令行,使用最多,推荐
Git CMD:Windows风格的命令行
Git GUI :图形界面的Git,不建议初学者使用,尽量先熟悉常用命令
6、基本的Linux命令学习
1)cd 改变目录
2)cd … 回退到上一个目录,直接cd进入默认目录
3)pwd 显示当前所在的目录路径
4)ls(ll) 都是列出当前目录中的所有文件,但ll列出的内容更为详细
5)touch 新建一个文件, eg: touch index.js就会在当前目录下新建一个index.js文件
6)rm 删除一个文件
7)mkdir 新建一个目录or新建一个文件夹
8)rm -r 删除一个文件夹, rm -r src 删除src目录
9)mv 移动文件 eg:mv index.html src
10)reset 重新初始化终端/清屏
11)clear 清屏
12)history 查看命令历史
13)help 帮助
14)exit 退出
15)#表示注释
7、Git配置(配置的本质就是文件)
所有的配置文件,其实都保存在本地
查看配置: git config -l
查看系统配置:git config --system --list
查看本地配置:git config --global --list
设置用户名邮箱地址:
git config --global user.name “yourname”
git config --global user.email “youremail”
8、git基本理论(核心)(参考https://mp.weixin.qq.com/s/Bf7uVhGiu47uOELjmC5uXQ)
Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)。如果再加上远程的git仓库(Remote Directory)就可以分为四个工作区域。文件在这四个区域之间的转换关系如下:
- Workspace: 工作区,平时存放代码的地方
- Index/Stage: 暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
- Reposity: 仓库区(或本地仓库),安全存放数据的位置,这里面有你提交所有版本的数据,其中HEAD指向最新放入仓库的版本
以上是本地的三个区域
- Remote:远程仓库,托管代码的服务器,可以简单的认为是你的项目组中的一台电脑用于远程数据交换
本地的三个区域确切的说应该是git仓库中HEAD指向的版本:
- Directory:就是一个整体,一个仓库,被git管理
- WorkSpace:需要git管理(进行版本控制)的文件和目录
- .git:存放git管理信息的目录,初始化仓库时建立(
git init ) - Index/Stage:暂存区,进入本地仓库钱,我们把所有的更新放在暂存区
- Local Repo:本地仓库,存放在本地的版本库,HEAD指向当前开发的分支,一般为创建分支之前指向主分支(master)
- Stash:隐藏,是一个工作状态保存栈,用于保存/恢复WorkSpace中的临时状态
git的工作流程
9、Git项目搭建
创建工作目录与常用命令
工作目录(workspace)一般是你希望Git帮助管理的文件夹;路径中建议不要有
日常使用需要记住下面六个命令
本地仓库搭建
有俩种办法:一种是创建全新的仓库,另一种是克隆远程仓库
1、创建全新的仓库,需要用Git管理的项目的根目录执行:
# 在当前目录新建一个Git代码库
$ git init
2、执行后可以看到,仅仅在项目中多出了一个.git目录,关于版本等的所有信息都在这个目录里面
克隆远程仓库
克隆远程目录,可以将远程服务器上的仓库完全镜像一份至本地
# 克隆一个项目和他的整个代码历史
$ git clone [url]
10、Git文件
文件的四种状态
- Untraced:未跟踪,在文件夹内,但没有添加到git库,需使用git add 命令将状态变为 Staged
- Staged:暂存,使用git commit命令可以将文件同步上传到本地仓库之中,文件为Unmodify状态,执行git HEAD filename取消暂存,文件状态变为Modified
- Unmodify:文件已通过git add命令添加入库,未修改
- 若修改文件,则会变味Modified状态
- 若使用git rm移除本地仓库,则会成为Untracked文件
- Modified:文件被修改
- 通过git add命令进入Staged状态
- 使用git checkout 则丢弃修改,返回到unmodify状态(也就是从版本库中找出历史文件,覆盖当前的文件)
git status [filename]
git status
在提交时忽略某些文件
在主目录下建立".gitignore"文件,规则如下:
1、文件中的空行或#开始的行将忽略
2、可以使用Linux通配符,eg:(*)代表任意多个字符;(?)代表一个字符,([abc])代表可选字符范围,({string1, string2})代表可选字符串…
3、名称最前面加一个感叹号(!),表示例外,其不被忽略
4、路径名称最前面是(/),表示忽略的文件再次目录下面,而子目录中的文件不被忽略
5、路径名称最后面是(/),表示忽略的此目录下该名称的字目录,而非文件
以斜杠"/“开头表示目录;”/“结束的模式只匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件;”/"开始的模式匹配项目跟目录;如果一个模式不包含斜杠,则它匹配相对于当前 .gitignore 文件路径的内容,如果该模式不在 .gitignore 文件中,则相对于项目根目录。
更多规则参考:https://www.cnblogs.com/kevingrace/p/5690241.html
*.txt
!lib.txt
/temp
build/
doc/*.txt
11、注册使用码云
1)注册登陆,并新建仓库
2)克隆仓库到本地
git clone [url]
随后便可以在本地文件夹中添加文件,并且使用git add . 等命令提交同步至远程仓库
|