Git概述
git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目
什么是版本控制
版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统
版本控制最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换
版本控制工具
1、集中式控制工具(CVS、SVN)
集中式的版本控制工具都有一个单一的集中管理的中央服务器,用来保存所有文件的修订版本。版本库是集中存放在中央服务器上的,要从中央服务器上拉取,工作完成后再推送到中央服务器,必须要联网才能实现。优点是管理方便。缺点是单点故障问题,如果中央服务器宕机,所有人都无法正常提交更新。
2、分布式控制工具(git)
分布式控制工具,客户端拉取下来的不是最新版本的文件快照,而是把代码仓库完整的镜像下来到本地库。这样任何一处协同工作的文件发生故障,都可以用其他客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作,实际上都是一次对整个文件仓库的完整备份。
3、分布式版本系统相较于集中式版本系统的优点:
(1)服务器断网的情况下也可以使用(因为版本控制实在本地运行的)
(2)每个客户端保存的都是完整的项目(包含历史记录,更加安全)
Git工作机制
代码托管中心
代码托管中心是基于网络服务器的远程代码仓库,一般称为远程库
局域网:
GitLab
互联网:
GitHub(外网)
Gitee码云(国内网站)
Git常用基础命令
1、设置用户签名
//设置用户名
git config--global user.name 用户名
//设置邮箱
git config--global user.email 邮箱
2、查看用户名和邮箱
//查看用户名
git config user.name
//查看邮箱
git config user.email
3、初始化本地库
获取需要管理项目的git管理权限,在需要管理的项目目录中执行git init,执行完后会出现一个.git隐藏文件
git init
4、查看本地库状态
git status
执行该语句会打印两条(提交过)或三条(没有提交过)日志信息:
没有提交过git:
第一个日志信息输出当前所在分支
第二个日志信息输出提交记录
第三个日志信息输出暂存区中待提交的文件
提交过git:
第一个日志信息输出当前所在分支
第二个日志信息输出暂存区中待提交的文件
在项目目录中新建一个txt文件后执行git status:
5、添加到暂存区
git add 要添加的文件名
执行git add gitDemo.txt后查看状态:
6、从暂存区中删除(工作区中的不会删除)
git rm --cached 文件名
7、提交到本地库
git commit -m "日志信息" 文件名
提交后执行git status:
8、查看日志信息
//简略日志信息
git reflog
//详细日志信息
git log
9、版本穿梭
git reset --hard 版本号
Git分支
什么是分支?
在版本控制过程中,同时推进多个任务时,就可以为每个任务创建单独的分支。使用分支意味着程序员可以将自己的开发任务从主线上分离出来,开发自己的分支时不影响主线分支的运行。
使用分支的优点
可以同时推进多个功能开发,提高开发效率;如果某一个分支开发失败,不会对其他分支产生影响,将失败的分支删除重新开始即可。
分支操作命令
命令 | 作用 |
git branch 分支名 | 创建分支 |
git branch -v | 查看分支 |
git checkout 分支名 | 切换分支 |
git merge 分支名 | 把指定的分支合并到当前分支上 |
合并冲突问题
合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。
怎么解决:
1、编辑有冲突的文件,删除特殊符号,决定要使用的内容
2、添加到暂存区
3、提交(此时提交不能带文件名)
GitHub操作
创建远程仓库别名
//查看当前远程地址的所有别名
git remote -v
//创建别名
git remote add 别名 远程地址
推送本地分支到远程仓库
git push 地址/别名 分支
拉取远程库到本地库
git pull 地址/别名 分支
克隆远程仓库到本地
git clone 远程仓库地址
IDEA集成Git
配置Git忽略文件
1、创建忽略规则文件git.ignore
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual mechine crash logs, see http://www/java.com/en/download/help/error_hotspot.xml
hs_err_pid*
.classpath
.project
.settings
target
.idea
*.iml
2、配置.gitconfig文件
[core]
excludesfile = C:/Users/86158/git.ignore