Git
一、Git介绍
免费开源的分布式版本控制(版本控制:一种记录文件内容变化,以便查阅特定版本修订情况的系统)系统。
GIt官网
分布式与集中式版本控制
集中式:
- 有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。
- 优点:能看到项目中其他人在干什么,管理也较为容易。
- 缺点:服务器宕机谁都无法工作。中央服务器的单点故障。
分布式:
- 每个客户端的每一次文件提取操作,实际上都是一次对整个文件仓库的完整备份。
- 优点:解决了集中式的缺点,断网情况下也可以进行开发,每个客户端保存的是整个完整的项目,包含历史记录更为安全。
- 无中央服务器,每个客户端在自己客户端做分布控制,客户端推送至远程库中,其余客户端去拉取远程库。若远程库挂掉了,在本地也可以做分布控制,也可以进行开发,做不了推送拉取而已。
Git工作机制
二、Git常用命令
01 设置用户签名
git config --global user.name 用户名
git config --global user.email 邮箱
说明:签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。Git 首次安装必须设置一下用户签名,否则无法提交代码。
在用户家目录下可查找到.gitconfig文件,以便查看用户签名。
02 初始化本地库
git init
结果:创建了一个.git非空隐藏文件
03 查看本地库状态
git status
04 添加暂存区
git add 文件名
将工作区的文件添加到暂存区
05 提交本地库
git commit -m "日志信息" 文件名
06 修改文件
经过vim 文件名
修改文件之后,git status
会显示已经修改。
07 历史版本
查看历史版本信息:
git reflog
查看版本详细信息:
git log
08 版本穿梭
git reset --hard 版本号
Git切换版本,底层其实是移动的HEAD指针。
三、Git分支操作
在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。
分支好处:
- 同时并行推进多个功能开发,提高开发效率。
- 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败 的分支删除重新开始即可。
分支操作
01 查看分支
git branch -v
02 创建分支
git branch 分支名
03 切换分支
git checkout 分支名
04 合并分支
git merge 分支名
在当前分支下,“分支名”为要将这个分支合并到当前的分支。
合并冲突
- 冲突产生的表现:后面状态为 MERGING
- 冲突产生的原因: 合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个。必须人为决定新代码内容。
解决冲突
-
编辑有冲突的文件,删除特殊符号,决定要使用的内容
特殊符号:<<<<<<< HEAD 当前分支的代码 ======= 合并过来的代码 >>>>>>> hot-fix
-
删除完成后
git add
添加到暂存区 -
git commit -m "日志信息"
来执行提交,不能带文件名。
四、Git团队协作机制
- 团队内协作
- 跨团队协作
五、GitHub操作
01 创建远程仓库
GitHub官网--->new repository--->输入仓库名--->创建
02 创建远程仓库别名
查看当前所有远程地址别名:
git remote -v
创建别名:
git remote add 别名 远程地址
(远程地址太长,可以用别名来代替)
03 推送本地库到远程库
git push 别名 分支
04 拉取远程库到本地库
git pull 别名 分支
05 克隆远程仓库到本地
git clone 远程地址
clone 会做如下操作:1. 拉取代码 2. 初始化本地仓库 3. 创建别名
六、IDEA集成Git
01 环境准备
配置Git忽略文件
why? -----> 与项目的实际功能无关,不参与服务器上部署运行。把它们忽略掉能够屏蔽 IDE 工具之间的差异
怎么忽略?
- 创建忽略规则文件 xxxx.ignore(前缀名随便起,建议是git.ignore)
这个文件的存放位置原则上在哪里都可以,为了便于让~/.gitconfig 文件引用,建议也放在用户家目录下
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 machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
.classpath
.project
.settings
target
.idea
*.iml
- 在.gitconfig 文件中引用忽略配置文件(此文件在 Windows 的家目录中)
[user]
name = Layne
email = Layne@atguigu.com
[core]
excludesfile = C:/Users/asus/git.ignore
注意:这里要使用"正斜线(/)“,不要使用"反斜线()”
02 定位Git程序
建立Maven工程->在菜单栏File->Setting->搜索栏搜Git,配置Git的安装路径。
03 初始化本地库
VCS中选择Create Git Repository,然后选择要创建Git本地仓库的工程。
04 添加到暂存区
右键点击项目选择 Git -> Add 将项目添加到暂存区。
05 提交到本地库
Git ->Commit
06 切换版本
07 创建分支
选择 Git,点击 Branches 按钮,在弹出的 Git Branches 框里,点击 New Branch 按钮,填写分支名称。
08 切换分支
在 IDEA 窗口的右下角,切换到 master 分支(点击checkout)
09 合并分支
- 在当前分支上,点击另一个分支的merge into current。
- 如果代码没有冲突,分支直接合并成功,分支合并成功以后,代码自动提交,无需手动提交本地库。
- 若两个分支都修改了代码,在合并分支的时候就会发生冲突。点击 Conflicts 框里的 Merge 按钮,进行手动合并代码。手动合并完代码以后,点击右下角的 Apply 按钮。代码冲突解决,自动提交本地库。
七、IDEA集成GitHub
01 设置GitHub账号
Settings->Version Control->GitHub
添加GitHub账号,若404,可以换一种Token方式,即在GitHub官网上,settings->Developer settings->Personal access tokens
02 分享项目到GitHub
share Project on Github
03 push推送代码到远程库
push 是将本地库代码推送到远程库,如果本地库代码跟远程库代码版本不一致,push 的操作是会被拒绝的。也就是说,要想 push 成功,一定要保证本地库的版本要比远程库的版本高!因此一个成熟的程序员在动手改本地代码之前,一定会先检查下远程库跟本地代码的区别!如果本地的代码版本已经落后,切记要先 pull 拉取一下远程库的代码,将本地代码更新到最新以后,然后再修改,提交,推送!
04 pull拉取远程库到本地库
pull 是拉取远端仓库代码到本地,如果远程库代码和本地库代码不一致,会自动合并,如果自动合并失败,还会涉及到手动解决冲突的问题。
### 05 clone克隆远程库到本地
八、码云Gitee
码云是开源中国推出的基于 Git 的代码托管服务中心,使用方式跟 GitHub 一样,而且它还是一个中文网站,如果你英文不是很好它是最好的选择。
Git官网
01 账号注册
略
02 码云创建远程库
官网上直接点击加号,填写仓库名称等。
03 IDEA集成码云
安装插件->连接码云
将本地代码 push 到码云远程库:自定义远程库链接->给远程库链接定义个 name,然后再 URL 里面填入码云远程库的 HTTPS 链接即可(码云在国内,无需采用SSH)->然后选择定义好的远程链接,点击 Push 即可。
04 码云复制 GitHub 项目
加号->导入已有仓库
九、GitLab
略
------------------------------------------------------我是分隔符-------------------------------------------------
参考内容:
- 尚硅谷Git学习视频
- Git学习笔记
第一次写完博客,如有不足请指正。