Git使用总结(集合版)
GIT 使用总结
1 版本控制
什么是版本控制
版本控制是一种在开发过程中用于管理文件,目录或工程等内容的修改历史,方便查看更改历史,备份以恢复以前版本的技术
优势:
- 多人协作开发,并行开发,提高效率
- 跟踪记录文件修改历史
- 按版本备份,能够轻松回滚版本或查看历史版本
- 查看版本修改记录
- 组织保护源代码或文档
- 减轻开发负担,降低人为错误(查看修改记录,防止失误修改文件)
- 统计工作量
没有使用版本控制的后果:(大一做的项目)
常见的版本控制工具
- GIT
- SVN
- CVS
- VSS
- TFS
版本控制分类
1 本地版本控制
记录文件更新,适合个人使用,如RCS
2 集中版本控制
多个用户同时编辑,定期上传到服务器,修改前从服务器下载更新最新版
发生冲突:同时修改某段代码,且一人先提交了,简单解决:备份自己的修改,使用服务器上的版本更新,手动增加自己的修改,并解决可能产生的兼容问题,提交
问题:必须联网,如果无法连接服务器,无法在本地查看历史版本,如果服务器损坏,容易丢失数据,单点故障
代表产品:SVN,CVS,VSS
3 分布式版本控制
每个人都会具备全部代码(安全隐患)
每个人的本地都会保存所有的版本,断网也能查看历史版本和离线提交,联网时将本地仓库推送到服务器,容易恢复数据,但增加了储存空间占用
GIT 与 SVN 的区别
Git是分布式版本管理系统
- 每台电脑都是完整的版本库,可以离线提交与查看历史,联网推送
- 离线工作,方便部署,良好的分支机制
- 安全性差于SVN,没有全局版本号
SVN是集中式版本控制
- 版本库集中在服务器,断网不能进行提交与查看历史
- 便于集中管理,安全性高,完善的权限管理系统
- 依赖服务器,不适合开源
2 Git 环境配置
- Git Bash:Linux风格的命令行,使用最多
- Git CMD:Windows风格的命令行
- Git GUI:图形界面GIT
Git 基本配置
x
1git config -l #查看配置
2git config --system --list #查看系统配置
3git config --global --list #查看用户配置
配置用户名与邮箱
xxxxxxxxxx
11git config --global user.name "jun_tian_zhou"
2git config --global user.email "1264719915@qq.com"
配置文件位置:
- 系统配置文件:E:\Git\etc\gitconfig
- 用户配置文件:C:\Users\12647\.gitconfig
知道文件位置,可以使用程序进行一键配置
3 Git 基础理论
工作区域
Git有三个工作区域:工作目录,暂存区,资源区和远程Git仓库,文件在这几个区域的转换关系如下:
- 工作区:平时存放项目的区域
- 暂存区:临时存放改动,本质为文件,保存即将提交的列表
- 仓库区:存放所有版本的数据,HEAD指向最新存放进仓库的版本
- 远程仓库:托管代码的服务器
工作流程
一般工作流程:
- 在工作区中添加,修改文件;
- 将需要进行版本管理的文件放入暂存区;
- 将暂存区的文件提交到Git仓库
文件有三种状态:已修改,已暂存,已提交
4 Git项目搭建
本地仓库搭建
本地仓库搭建有两种方法:创建全新仓库,克隆远程仓库
- 创建全新仓库
xxxxxxxxxx
11#在当前目录新建Git代码库
2git init
- 克隆远程仓库
x
1#克隆远程仓库到本地 克隆会此目录下新建文件夹,并将项目导入新建的文件夹
2git clone [url] #https://gitee.com/jun_tian_zhou/images.git
5 Git文件操作
文件的四种状态
- Untracked:未跟踪,此文件在Git工作目录,但是没参与版本控制,通过git add将文件状态改变为Staged
- Unmodify:文件加入Git仓库,但是在目前工作区与历史仓库中的文件完全相同,即未修改,如果文件被修改,状态改变为Modified,如果使用git rm移出版本库,则变为Untracked状态
- Modified:文件已经被修改,但是并没有执行其他操作,可以通过git add加入暂存区,变为Staged状态,使用git checkout命令放弃修改,文件变为历史仓库的最新版本的文件(覆盖当前文件),回到Unmodify状态
- Staged:暂存状态,执行git commit将修改同步Git仓库,工作区文件与仓库文件一致,状态变为Unmodify,或者使用git reset HEAD filename取消暂存,文件状态变为Modified
查看文件状态
xxxxxxxxxx
11#查看文件状态
2git status
3
4#将所有文件添加到暂存区
5git add .
6
7#提交暂存区文件到仓库 -m 提交信息
8git commit -m "add file ReadMe.md"
忽略文件
有些不需要纳入版本控制的文件,比如数据文件,临时文件等
在项目根目录下建立".gitignore"文件,文件规则如下:
x
1*.txt #忽略所有的.txt结尾的文件
2!lib.txt #此文件除外 例外规则,不被忽略
3/temp #忽略temp目录下的文件,子目录文件不忽略
4buile/ #忽略build目录下所有文件
5doc/*.txt #忽略 doc/notes.txt 不包括 doc/server/arch.txt
IDEA JAVA项目基本的忽略文件:
xxxxxxxxxx
1151*.class
2*.log
3*.lock
4
5#Package Files
6*.jar
7*.war
8*.ear
9
10#Output Files
11out/
12
13#idea
14.idea/
15*.iml
6 Git远程仓库
设置SSH公钥,实现免密登录
xxxxxxxxxx
21#在任意目录下生成SSH公钥
2ssh-keygen -t rsa
公钥生成的位置:
- C:\Users\12647.ssh
7 IDEA操作Git
IDEA修改 提交
IDEA设置中设置Git路径
测试OK就能在IDEA中使用Git了
IDEA项目初始化过Git仓库后就能直接使用了
例如:修改的文件此时会自动标蓝
点击提交
本地仓库提交成功
连接远程仓库
创建远程仓库,使用本地仓库进行推送不用初始化仓库,初始化完仓库直接推送可能会导致树冲突
这里创建一个空的仓库
使用Gitee会直接生成连接,推送命令
把在IDEA创建好的仓库连接到远程仓库
x
1#添加远程仓库URL 这里使用SSH 结合前面的SSH密钥实现免密推送
2git remote add origin git@gitee.com:jun_tian_zhou/jdbcstudy.git
3#查看远程仓库是否添加
4git remote -v
在CMD下测试SSH连接:
第一次连接需要确定 输入yes
连接成功后就能推送到远程仓库了
xxxxxxxxxx
11#第一次推送 加-u origin仓库别名,添加远程仓库时设置的 master主分支
2git push -u origin master
推送成功!
开源项目可以添加开源证书,这里选择了GPL3.0,远程仓库更新了LICENSE文件
使用命令获取最新远程仓库:
xxxxxxxxxx
11#拉取远程仓库
2git pull
更新成功
使用IDEA解决更新产生的冲突
模拟场景:
在远程仓库和本地同时修改并提交,此时进行PULL操作(IDEA使用GUI界面操作):
这里可以选择使用远程仓库的或者使用本地的,此时冲突的文件在IDEA会直接标红,使用命令git status查看状态会显示冲突文件both modify,这里选择手动修改文件解决冲突,点击Merge(视具体情况进行选择,可以只保留远程的或使用自己的)
可以看到PULL操作的本质就是分支合并
克隆方式初始化远程仓库
步骤:
- 在远程新建仓库,选择初始化仓库
- 本地克隆仓库
- 把克隆的仓库里所有文件拷到需要版本管理的项目目录下(记得显示隐藏文件拷贝.git文件夹)
- 直接执行git add git commit git push提交,推送(前面克隆操作已经设置好了远程仓库)
初学Git需要理解的概念
- 更新成功后不会覆盖目前工作区没有提交的文件(没有冲突),如果产生冲突(未提交的代码与远程最新版本修改了同一个代码区域),此时需要选择保留的代码块,一般做法:使用远程最新版本的代码块,备份自己的代码块,更新完成覆盖自己的修改,之后再将自己修改复制进新版本,并且完成测试,没有兼容问题之后,将修改完成的代码进行提交。如果冲突问题较大,需要与之前版本的提交人进行协商处理(具体问题具体解决)。
使用IDEA提交的好处
- 可视化界面查看自己修改的内容(非常重要 项目中必须仔细检测是否修改到了不该修改的文件)
- 选择提交的文件(如:配置文件在仓库中有备份 此时在测试自己的环境 不需要提交 取消勾选提交)
- 查看修改历史(Alt+9快捷打开修改历史)(一般的大型项目不可能直接去回滚版本 如果个人代码修改之后出现问题此时就需要查看历史修改记录 IDEA中能轻易的查看修改)
8 Git分支
多人合作项目必须掌握,多人开发分支会用的非常多
使用文章开头的连接网站能够更加方便理解分支,测试效果如下:
分支相当于同时存在几个不同的版本,这几个版本互不干扰,但是如果分支需要合并就需要解决问题
git分支中常用的命令:
x
101#查看本地分支
2git branch
3#查看远程分支
4git branch -r
5#新建分支
6git branch [branch]
7#切换分支到指定分支
8git checkout [branch]
9#新建分支并切换到该分支 合并了前面两步
10git checkout -b [branch]
11#合并指定分支到当前分支
12git merge [branch]
13#删除分支
14git branch -d [branch]
分支操作的简单演示:新建dev分支,切换分支到dev,修改提交,切换回主分支,合并分支
分支操作过后如图所示:
分支合并冲突
模拟分支合并冲突场景:
按上面的流程建立切换dev分支,dev分支的readme文件修改如下:
将master分支readme文件修改如下:
尝试进行合并,冲突产生了
这时使用git status查看冲突的文件,git会提示修复冲突使用git commit提交或者使用git merge --abort中止分支合并,此时打开文件,git会自动标记冲突的位置
冲突的解决方法核心:协商 保留两个分支的代码 手动进行一次提交,解决冲突
修改文件:
提交修改:
分支合并完成使用git log --graph命令查看分支合并记录:
posted on 2021-11-28 02:50 Egoistic_Flowers 阅读(46) 评论(0) 编辑 收藏 举报