Egoistic_Flowers

Git使用总结(集合版)
GIT 使用总结

02d5b9510de167f00e2261b4871fcc80

GIT 使用总结

[推荐]轻松入门,动画演示网站

1 版本控制

什么是版本控制

版本控制是一种在开发过程中用于管理文件,目录或工程等内容的修改历史,方便查看更改历史,备份以恢复以前版本的技术

优势:

  • 多人协作开发,并行开发,提高效率
  • 跟踪记录文件修改历史
  • 按版本备份,能够轻松回滚版本或查看历史版本
  • 查看版本修改记录
  • 组织保护源代码或文档
  • 减轻开发负担,降低人为错误(查看修改记录,防止失误修改文件)
  • 统计工作量

没有使用版本控制的后果:(大一做的项目)

image-20211127134957845

常见的版本控制工具

  • GIT
  • SVN
  • CVS
  • VSS
  • TFS

版本控制分类

1 本地版本控制

记录文件更新,适合个人使用,如RCS

2 集中版本控制

未命名文件(4)

多个用户同时编辑,定期上传到服务器,修改前从服务器下载更新最新版

发生冲突:同时修改某段代码,且一人先提交了,简单解决:备份自己的修改,使用服务器上的版本更新,手动增加自己的修改,并解决可能产生的兼容问题,提交

问题:必须联网,如果无法连接服务器,无法在本地查看历史版本,如果服务器损坏,容易丢失数据,单点故障

代表产品:SVN,CVS,VSS

3 分布式版本控制

未命名文件(5)

每个人都会具备全部代码(安全隐患)

每个人的本地都会保存所有的版本,断网也能查看历史版本和离线提交,联网时将本地仓库推送到服务器,容易恢复数据,但增加了储存空间占用

GIT 与 SVN 的区别

  • Git是分布式版本管理系统

    • 每台电脑都是完整的版本库,可以离线提交与查看历史,联网推送
    • 离线工作,方便部署,良好的分支机制
    • 安全性差于SVN,没有全局版本号
  • SVN是集中式版本控制

    • 版本库集中在服务器,断网不能进行提交与查看历史
    • 便于集中管理,安全性高,完善的权限管理系统
    • 依赖服务器,不适合开源

2 Git 环境配置

下载

  • Git Bash:Linux风格的命令行,使用最多
  • Git CMD:Windows风格的命令行
  • Git GUI:图形界面GIT

Git 基本配置

image-20211127145123815

配置用户名与邮箱

配置文件位置:

  • 系统配置文件:E:\Git\etc\gitconfig
  • 用户配置文件:C:\Users\12647\.gitconfig

知道文件位置,可以使用程序进行一键配置

3 Git 基础理论

工作区域

Git有三个工作区域:工作目录,暂存区,资源区和远程Git仓库,文件在这几个区域的转换关系如下:

git 工作区

  • 工作区:平时存放项目的区域
  • 暂存区:临时存放改动,本质为文件,保存即将提交的列表
  • 仓库区:存放所有版本的数据,HEAD指向最新存放进仓库的版本
  • 远程仓库:托管代码的服务器

工作流程

  • 一般工作流程:

    • 在工作区中添加,修改文件;
    • 将需要进行版本管理的文件放入暂存区;
    • 将暂存区的文件提交到Git仓库

文件有三种状态:已修改,已暂存,已提交

4 Git项目搭建

本地仓库搭建

本地仓库搭建有两种方法:创建全新仓库,克隆远程仓库

  1. 创建全新仓库
  1. 克隆远程仓库

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

查看文件状态

image-20211127175133121

忽略文件

有些不需要纳入版本控制的文件,比如数据文件,临时文件等

在项目根目录下建立".gitignore"文件,文件规则如下:

IDEA JAVA项目基本的忽略文件:

6 Git远程仓库

设置SSH公钥,实现免密登录

公钥生成的位置:

  • C:\Users\12647.ssh

image-20211127184045297

7 IDEA操作Git

IDEA修改 提交

IDEA设置中设置Git路径

image-20211127190812310

测试OK就能在IDEA中使用Git了

IDEA项目初始化过Git仓库后就能直接使用了

例如:修改的文件此时会自动标蓝

image-20211127190938909

点击提交

image-20211127191038825

image-20211127191405680

image-20211127191538771

本地仓库提交成功

连接远程仓库

创建远程仓库,使用本地仓库进行推送不用初始化仓库,初始化完仓库直接推送可能会导致树冲突

这里创建一个空的仓库

使用Gitee会直接生成连接,推送命令

image-20211127193751619

把在IDEA创建好的仓库连接到远程仓库

在CMD下测试SSH连接:

image-20211127194117362

第一次连接需要确定 输入yes

连接成功后就能推送到远程仓库了

image-20211127195326973

image-20211127195442700

推送成功!

开源项目可以添加开源证书,这里选择了GPL3.0,远程仓库更新了LICENSE文件

使用命令获取最新远程仓库:

image-20211127195957266

更新成功

使用IDEA解决更新产生的冲突

模拟场景:

在远程仓库和本地同时修改并提交,此时进行PULL操作(IDEA使用GUI界面操作):

image-20211128020152352

这里可以选择使用远程仓库的或者使用本地的,此时冲突的文件在IDEA会直接标红,使用命令git status查看状态会显示冲突文件both modify,这里选择手动修改文件解决冲突,点击Merge(视具体情况进行选择,可以只保留远程的或使用自己的)

image-20211128022125485

image-20211128021405316

可以看到PULL操作的本质就是分支合并

image-20211128021452678

克隆方式初始化远程仓库

步骤:

  • 在远程新建仓库,选择初始化仓库
  • 本地克隆仓库
  • 把克隆的仓库里所有文件拷到需要版本管理的项目目录下(记得显示隐藏文件拷贝.git文件夹)
  • 直接执行git add git commit git push提交,推送(前面克隆操作已经设置好了远程仓库)
  • 初学Git需要理解的概念

    • 更新成功后不会覆盖目前工作区没有提交的文件(没有冲突),如果产生冲突(未提交的代码与远程最新版本修改了同一个代码区域),此时需要选择保留的代码块,一般做法:使用远程最新版本的代码块,备份自己的代码块,更新完成覆盖自己的修改,之后再将自己修改复制进新版本,并且完成测试,没有兼容问题之后,将修改完成的代码进行提交。如果冲突问题较大,需要与之前版本的提交人进行协商处理(具体问题具体解决)。

使用IDEA提交的好处

  • 可视化界面查看自己修改的内容(非常重要 项目中必须仔细检测是否修改到了不该修改的文件)
  • 选择提交的文件(如:配置文件在仓库中有备份 此时在测试自己的环境 不需要提交 取消勾选提交)
  • 查看修改历史(Alt+9快捷打开修改历史)(一般的大型项目不可能直接去回滚版本 如果个人代码修改之后出现问题此时就需要查看历史修改记录 IDEA中能轻易的查看修改)

8 Git分支

多人合作项目必须掌握,多人开发分支会用的非常多

Git分支理解(推荐)

使用文章开头的连接网站能够更加方便理解分支,测试效果如下:

image-20211128024258123

分支相当于同时存在几个不同的版本,这几个版本互不干扰,但是如果分支需要合并就需要解决问题

git分支中常用的命令:

分支操作的简单演示:新建dev分支,切换分支到dev,修改提交,切换回主分支,合并分支

image-20211128010112775

分支操作过后如图所示:

branch-2

分支合并冲突

模拟分支合并冲突场景:

按上面的流程建立切换dev分支,dev分支的readme文件修改如下:

image-20211128011659645

将master分支readme文件修改如下:

image-20211128012033136

尝试进行合并,冲突产生了

image-20211128012333385

这时使用git status查看冲突的文件,git会提示修复冲突使用git commit提交或者使用git merge --abort中止分支合并,此时打开文件,git会自动标记冲突的位置

image-20211128013011259

冲突的解决方法核心:协商 保留两个分支的代码 手动进行一次提交,解决冲突

修改文件:

image-20211128013647976

提交修改:

image-20211128013726414

分支合并完成使用git log --graph命令查看分支合并记录:

image-20211128014150640

posted on 2021-11-28 02:50  Egoistic_Flowers  阅读(46)  评论(0编辑  收藏  举报