Git
1.版本控制
- 版本控制(Revision control):是一种在开发的过程中,用于管理我们对文件,目录或工程等内容的修改历史,方便查看更改历史记录,备份以便回复以前的版本的软件工程技术
简单来说是用于管理多人协同开发项目的技术,Git就是一种版本控制器-
本地版本控制:
纪录文件每次的更新,可以对每个版本做一个快照,或是纪录补丁文件,适合个人用。 -
集中版本控制:
所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改,有个问题:所有的版本数据都存在服务器上,用户的本地只有自己以前所同步的版本,不连网,用户就看不到历史版本,也无法切换版本验证问题,或是在不同分支工作,同时,所有的数据都放在一个单一的服务器上,当这个服务器损坏了,那么就会丢失所有的数据,要定时备份,代表产品:SVN,CVS,VSS -
分布式版本控制(Git):
每个人都拥有全部的代码,安全隐患。所有的版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在联网时push到响应的服务器或其他用户那里。由于每个用户都保存了所有的版本的数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但是这样增加了本地存储空间的占用。不会因为服务器损坏或者网络问题,造成不能工作的情况。 - Git Bash:Linux命令
- Git CMD:类似Windows CMD
- Git GUI:Git图形页面
-
2.Git 配置(都在本地)
- git config -l:查看所有的配置文件
- git config --system --list :查看系统config
- git config --global --list:查看当前用户(global)配置
- git config --global user.name “linluo”//用户名(必须要配置)
- git config --global user.email “xxx@qq.com” //邮箱(必须要配置)
- 补充:环境变量不配吗?环境变量只是为了全局使用而已,git默认给你配了。
3.Git 基本理论
- Git 本地有四个工作区域:
- 工作目录(Working Directory):工作区,平时存放项目代码的地方
- 暂存区(Stage/Index) :用于临时存放改动,事实上只是一个文件,保存即将提交到文件列表信息
- 资源库(Repository 或Git Directory):安全存放数据的位置,有提交到所有版本的数据。
- 远程的Git仓库(Remote Directory):托管代码的服务器
上传:工作区 git add files 暂存区 git commit 资源区 git push 远程Git仓库
下载:远程Git仓库 git pull 资源区 git reset 暂存区 git checkout 工作区 - Git四种状态
- Untracked:未跟踪,没有加入到git库 不参与版本控制,可以通过 git add 把状态变成staged
- Unmodify: 文件入库,没修改过,用git rm 移出,变成Untracked状态
- Modifled :修改过的状态,仅仅只是修改,没有其他的操作,一种是git add 进入staged(暂存),一种是git checkout 丢弃修改,返回unmodify状态,
- Staged:暂存状态,git commit将修改同步到库
4.Git实操
- 1 git init 初始化
- 2 git clone [url] //从远程服务器上的仓库完全镜像一份到本地
- 3 git add . 把所有文件都添加到暂存区
- 4 git commit -m “new file hello.txt” 提交暂存区中的内容到本地仓库 -m 提交的信息,本地仓库就是执行git init 的位置
- 5 git push 提交到远程代码库
5.忽略文件
-
忽略文件:有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等
在主目录下建立".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
SSH
- 在本地的Git Bash中输入
ssh-keygen -t rsa 然后回车,将得到的id_ras.pub 中的字符串添加到码云账户的SSH连接中
本文参考b站-遇见狂神说-视频