Git
版本控制
版本控制工具
主流的版本控制器:
- Git
- SVN (subversion)
- CVS (Concurrent Version System)
- VSS (Micorosoft Visual SourceSafe)
- TFS (Team Foundation Server)
- visual Studio Online
版本控制分类
1.本地版本控制
记录文件每次的更新,可以对每个版本做一个快照,或是记录补丁文件,适合个人用。如RCS
2.集中版本控制 (SVN)
所有版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改
所有数据保存在单一的服务器上,容易丢失数据,用户的本地只有自己以前所同步的版本,如果不联网就看不到历史版本,也无法切换版本验证问题,或在不同分支工作。
3.分布式版本控制 git
所有的版本信息仓库全部同步到本地的每一个用户,可以在本地查看所有版本历史,可以离线进行本地提交,只需联网时传输到相应的服务器或其他用户。由于每个用户都保存所有的版本数据,只要有一个用户设备没有问题数据就不会丢失。但是增加了本地存储空间的占用,且容易造成安全隐患。
Git和SVN的主要区别
SVN是集中式版本控制系统,版本库是集中放在中央服务器的。工作时,需要从中央服务器上下载最新的版本到本地电脑,完成后需要上传修改后的到中央服务器。集中式版本控制是必须联网进行工作,对网络带宽要求较高。
Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,每个人修改后互相推送,就可以看到对方的修改。git可以直接看到更新了那些代码和文件。
Git是目前世界上最先进的分布式版本控制系统。
Git环境配置
安装Git 官网或者镜像库
Git Bash:Unix与Linux风格的命令行,使用最多
Git CMD: Windows风格的命令行
Git GUI:图形界面的Git,
常用Linux命令
1)cd : 改变目录。
2)cd . . 回退到上一个目录,直接cd进入默认目录
3)pwd : 显示当前所在的目录路径。
4)ls(ll): 都是列出当前目录中的所有文件,只不过ll(两个ll)列出的内容更为详细。
5)touch : 新建一个文件 touch index.js 就会在当前目录下新建一个 index.js 文件。
6)rm: 删除一个文件, rm index.js 就会把index.js文件删除。
7)mkdir: 新建一个目录,就是新建一个文件夹。
8)rm -r : 删除一个文件夹, rm -r src 删除src目录
rm -rf / 切勿在Linux中尝试!删除电脑中全部文件!
9)mv 移动文件, mv index.html src index.html 是我们要移动的文件, src 是目标文件夹,当然, 这样写,必须保证文件和目标文件夹在同一目录下。
10)reset 重新初始化终端/清屏。
11)clear 清屏。
12)history 查看命令历史。
13)help 帮助。
14)exit 退出。
15)# 表示注释
Git配置
安装成功后,首先要设置用户名和e-mail地址
git config --global user.name "" #名称
git config --global user.email #邮箱
Git基本理论(核心)
- 工作目录
- 暂存区
- 资源库
- 远程仓库
工作流程
创建本地仓库:
1.创建一个新的本地仓库
2.克隆一个远程仓库
git init
#在当前目录新建一个Git代码库
执行后在目录下出现一个.git的隐藏文件
克隆远程仓库
git clone + url
查看文件状态
#查看指定文件状态
git status [filename]
#查看所有文件状态
git status
git add .
#添加所有文件到暂存区
git commit -m
#提交暂存区中的文件到本地仓库 -m 提交信息
忽略文件
有些文件不想打包上传,可以在.gitignore文件中进行配置
在主目录下建立".gitignore"文件,此文件有如下规则:
1.忽略文件中的空行或以井号(#)开始的行将会被忽略。
2.可以使用Linux通配符。例如∶星号(*)代表任意多个字符,问号( ?)代表一个字符,方括号
([abc])代表可选字符范围,大括号({string1,string2,.…})代表可选的字符串等。
3.如果名称的最前面有一个感叹号( !),表示例外规则,将不被忽略。
4.如果名称的最前面是一个路径分隔符(/ ),表示要忽略的文件在此目录下,而子目录中的文件不
忽略。
5.如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件
(默认文件或目录都忽略)。
#为注释
*.txt
#忽略所有.txt结尾的文件,这样的话上传就不会被选中!
!7ib.txt
#但1ib.txt除外
/temp
#仅忽略项目根目录下的TODo文件,不包括其它目录temp
build/
#忽略bui1d/目录下的所有文件
doc /* .txt
#会忽略doc/notes.txt但不包括doc / server/arch.txt
在gitee上创建仓库,在本地文件夹中clone +地址 ,将项目源码放在文件夹里或者把文件夹里面的文件放在项目目录下,打开idea ->commit ->push
git分支
git分支相互平行互不干扰。在需要合并的时候可以进行合并
git分支中常用命令:
#列出所有本地分支
git branch
#列出所有远程分支
git branch -r
#新建一个分支,但依然停留在当前分支
git branch [branch-name]
#新建一个分支,并切换到该分支
git checkout -b [branch]
#合并指定分支到当前分支
git merge [branch]
#删除分支
git branch -d [branch-name]
#删除远程分支
git push origin --delete [branch-name]
git branch -dr [remote/branch]