走进Git
版本控制
版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。
版本控制最主要的功能就是追踪文件的变更。它将什么时候、什么人更改了文件的什么内容等信息忠实地了记录下来。每一次文件的改变,文件的版本号都将增加。除了记录版本变更外,版本控制的另一个重要功能是并行开发。版本控制可以有效地解决版本的同步以及不同开发者之间的开发通信问题,提高协同开发的效率。
主要是为了解决多人协同开发问题。
版本控制分类
- 本地版本控制:在本地电脑中每一次都记录一个版本,手工处理。
- 集中式版本控制:所有的版本信息都保存在服务器上,协同开发者从服务器上更新或上传自己的修改;如SVN、CVS、VSS
- 分布式版本控制:所有的版本信息都保存在本地,每个人都拥有全部的代码,可以本地查看、提交,只需在联网时push到相应的服务器中,不会因为网络影响工作。如:Git
SVN和Git的区别:
SVN是一个集中式版本控制系统,所有的版本库都放在中央服务器。在使用的时候每个人都需要联网先从中央服务器中获得最新的版本信息,然后进行工作,等工作完成后,需要再次将数据上传到中央服务器,对网络要求较高。
Git是目前最先进的分布式版本管理系统,从服务器上克隆出完整的Git仓库,每一个人都用于全部的代码,个人电脑就是一个完整的版本库,不需要每次工作时再去联网到中央服务器获取最新的版本,联网时会自动的push到服务器中,在Git上可以直接看到更新了那些代码,如果两个开发者出现冲突,解决冲突后由一个人提交。
Git的环境配置
Git Bash:UNIX和Linux风格的命令行(建议使用)
Git CMD:windows风格命令行
Git GUI:图形界面的Git
环境变量默认就已经配置完毕,可以直接使用。可在桌面右键,然后点击Git Bash Here;也可以去找程序。
Linux基本命令和Git基本命令
- cd: 进入路径, 如cd 进入默认路径;cd Desktop 进入当前目录下的Desktop;cd 路径–》进入指定路径
- cd …: 回退到上一级目录(cd 和… 中间有空格)
- pwd:显示当前所在的目录路径
- ls:列出当前目录中的所有文件
- lsll:列出当前目录的所有文件(更加详细)
- touch:新建文件 如touch first.txt就会在当前目录文件中新建一个first.txt
- rm :删除一个文件,如rm first.txt 删除first.txt文件(rm 不能删除文件夹)
- mkdir:创建一个文件夹mkdir Test
- rm -r :删除一个文件夹 rm -r Test
- mv :移动文件(必须在同一目录)如:mv a.txt Test --》将 a.txt 移到Test文件夹中
- reset :初始化终端
- clear:清屏
- history:查看历史命令行
- help:帮助文档,命令行提示
- exit:退出
- #表示注释
/ 代表根目录
Git配置
-
git config -l :git的本地配置
-
git config --system --list :系统的配置,过滤掉用户配置
-
git config --global --list:用户的本地配置,用户名,邮箱
git config --global user.name “名称” //设置用户名
git config --global user.email 邮箱号 //设置邮箱
配置文件就放在安装目录的/etc/config
Git原理
Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Respository)再加上一个远程服务器Git仓库(Remote Directory)。
- 工作目录(Working Directory):自己项目所在位置,存放代码的地方。
- 暂存区(Stage/Index):临时仓库,实际上它就是一个文件,保存即将提交的信息。
- 资源库(Respository):本地仓库,里面存放着所有的版本信息,所有的代码。
- Git仓库(Remote Directory):远程仓库,远程服务器的仓库,将代码托管在这上面。
工作流程:
- 在工作目录中添加、修改文件;
- 将需要提交的文件放到暂存区;
- 将暂存区区的数据提交到本地仓库;
- 从本地仓库push到远程仓库(远程服务器的仓库)。
Git 命令
git init #初始化操作,本地新创建的仓库
git clone url #url需要克隆的仓库url,将服务器上的镜像克隆一份在本地
git add . #添加所有文件到暂存区
git status #查看文件的状态
git commit -m "消息内容" #提交到本地仓库
忽略文件
有些文件不需要要放在版本控制中,也就是不需要上传到远程仓库
建立.gitignore文件
- 忽略文件中的空行或以 # 号开始的行会被忽略
- 可以使用Linux通配符:*代表任意多的字符、?代表一个字符、 [xxx]代表可选字符范围、还有{字符串.,字符串2…}
- 如果名称最前面有!,表示例外规则,将不被忽略
- 如果名称最前面有/,表示要忽略的文件在此目录下,子目录中文件不被忽略
- 如果名称最后面是/,则表示忽略的是目录下的子目录,忽略整个文件夹及其子目录
.gitignore文件常用配置
*.class
*.log
*.lock
#Package Files#
*.jar
*.war
*.ear
target/
#idea
.idea/
*.iml
*velocity.log*
###STS###
.apt_generated
.factorypath
.springBeans
###IDEA###
*.iml
*.ipr
*.iws
.idea
.classpath
.project
.settings/
bin/
tmp/
#rebel
*rebel.xml*
使用码云与IDEA集成
#首先你要注册登录
#设置本机绑定SSH公钥,实现免密登录。rsa是加密算法,也可不用
进入 C:\Users\Administrator\.ssh 用git 执行ssh-keygen -t rsa
在文件夹中生成两个文件,将后缀为.pub文件的内容粘贴到码云中即可
#将公钥信息Public key添加到码云账户即可
码云 --》 设置 --》SSH公钥
#码云创建仓库,然后使用git clone url 将远程仓库克隆到本地
#在IDEA中绑定Git 两种
1.在创建项目时,将项目目录改为你本地仓库 .gitignore
2.将你克隆下来的项目替换到你创建的项目文件中
#如果再次打开项目,右上角出现git相关按钮,即绑定成功
项目的提交可以直接操作按钮也可以在Terminal中写git命令
git add .
git commit -m "提交的消息" #提交到本地仓库
git push #添加到远程仓库
Git分支–多人协同
git branch #列出本地所有分支
git branch -r #列出所有远程分支
#branch-name代表分支名
git branch branch-name #新建分支,但停留在当前分支,不会跳过去
git checkout branch-name #跳转到相应分支
git checkout -b branch-name #新建分支,并跳转
git merge branch-name #合并指定分支到当前分支
git branch -d branch-name #删除指定分支
git push origin --delete branch-name #删除远程指定分支
git branch -dr remote/branch