Git使用教程:最详细、最傻瓜、最浅显、真正手把手教

news/2024/11/7 5:33:19/

GIT

      • GIT
          • 版本控制
          • 版本控制的意义
          • 分布式
          • 图形化客户端
          • 环境搭建
        • 仓库的操作
        • 分支
          • 使用场景
          • 命令
        • 远程仓库操作
          • 生成公钥
          • 命令
          • 冲突
          • 忽略列表的配置
            • 时机
            • 配置方式
          • 版本回退
          • 练习:

GIT

版本控制

把文件系统中的文件,按照修改的版本进行记录,进行管理的操作。

版本控制的意义
  1. 备份文件,防止丢失
  2. 协同工作,处理文件合并和冲突的问题
  3. 责任追溯
  4. 工作量统计
  5. 个人开发时代码的回退
分布式

在这里插入图片描述

git是一个分布式的版本控制工具,包含本地仓库和远程仓库两种仓库。每个仓库中都存放历史版本文件,可以单独进行管理。通过使用远程仓库可以实现多用户之间的协同。

图形化客户端

乌龟系列、SourceTree

环境搭建

开发者名称和邮箱:在git中,要求开发者提供一个名称和邮箱。用于开发者之间的沟通交流,该名称和邮箱不会进行验证,可以任意指定。但一般填写时,至少保证邮箱是自己的,便于其他开发者联系。

仓库的操作

工作区:.git目录在哪个目录中,那哪个目录就是工作区。工作区中的文件才能被版本控制。换句话说,工作区就是一个能够被git操作的范围。

本地仓库:就是.git目录,内部有一套存储结构,能够保存各个文件的版本并进行版本控制。

暂存区:是一个临时存储空间,工作区中的文件要先添加到暂存区,然后才能提交到本地仓库中成为一个版本。

命令作用
git init初始化,创建 git 仓库
git status查看 git 状态 (文件是否进行了添加、提交操作)
git add 文件名添加,将指定文件添加到暂存区
git commit -m ‘提交信息’提交,将暂存区文件提交到历史仓库。git中强制提交时必须填写说明信息,建议把说明信息填写详细一些
git log查看日志( git 提交的历史日志)

重置操作(回退版本)

​ git reset --hard 版本号前几位(只要这几位能唯一确定一个版本即可。)

分支

分支是每一次提交的代码的版本节点串成的一条时间线。可以从任何一个节点开辟新的分支继续进行串联。

使用场景
  1. 修复以前版本的bug
  2. 在开发分支中加入一些尝试性的操作(做实验)
  3. 并行开发多个不同版本
命令
  1. 创建 git branch 分支名

    ​ 如果在创建分支的时候最后加上版本号,就可以基于指定版本创建分支。

    ​ git branch 分支名 版本号

  2. 切换 git checkout 分支名

  3. 查看分支列表 git branch

  4. 合并 git merge 分支名

    ​ 把指定的目标分支的内容,合并到当前分支

    ​ 合并:把两个分支中如果有互相独立的文件,直接放到一起。如果两个分支中有相同的文件,保留一个即可。如果两个分支中有相同名字的文件但是内容不一样,这就会查看内容中行是否可以合并。如果内容是完全不同的,并且不能简单追加合并,则产生冲突。冲突必须手动解决。

远程仓库操作

克隆:在本地什么都没有的情况下,第一次操作时进行的操作。会把远程仓库中的所有文件包括.git版本库都复制过来。一般克隆和init操作二选一即可。

推送:把本地仓库的内容上传到远程仓库中

​ 注意:在实际操作时,为了保证推送能够成功,推送之前养成先拉取的习惯。同时,推荐大家养成勤拉取,勤提交的习惯。

拉取:把远程仓库中的内容下载到本地,这个下载是更新下载,类似于分支的合并。

生成公钥

用于验证以ssh协议访问仓库的权限。

公钥和私钥配对进行加密通信作为验证身份的手段。

直接参考gitee或者github上的新手向导输入指令添加公钥到服务器即可。

如果使用http协议的话,就不需要配置公钥和私钥了,而是会弹出登录窗口让你输入网站的用户名和密码进行验证。

命令

添加远端地址

​ git remote add 远端名称 url(http协议和ssh协议两种)

推送本地仓库到远端

​ git push -u 远端名称 分支名

克隆

​ git clone 远端url

拉取

​ git pull 远端名称 分支名

冲突
  1. 要尽可能提前预防冲突,防止冲突产生。勤拉取勤推送

  2. 产生冲突之后,要知道如何解决。

    ​ 自动在拉取的时候会把冲突的文件进行合并,只不过会把冲突部分用特殊句式标注出来,我们需要手动指定最终版本然后再提交推送。所以,如果我们提交的粒度足够小,冲突的代码就会比较少,就会比较容易解决。

忽略列表的配置
时机

项目刚创建,第一次提交之前就要配置完毕。

配置方式

在工作目录下创建一个文件,名称为 .gitignore

# no .a files 以.a结尾的所有文件被忽略

*.a

# but do track lib.a, even though you’re ignoring .a files above

# lib.a会被版本控制,是在上面配置的基础上排除lib.a的忽略

!lib.a

# only ignore the TODO file in the current directory, not subdir/TODO

# 忽略当前目录下的TODO文件,并不是TODO子目录

/TODO

# ignore all files in the build/ directory 忽略所有的build子目录下的资源,包含该目录本身

build/

# ignore doc/notes.txt, but not doc/server/arch.txt 忽略doc目录下的所有以.txt结尾的直接子文件,但是不会忽略子目录中的txt文件

doc/*.txt

# ignore all .pdf files in the doc/ directory 忽略doc目录下的所有pdf文件,包含子目录中的也忽略

doc/**/*.pdf

版本回退
  1. 记录当前的版本号
  2. 使用reset --hard的方式回退到指定的版本
  3. 使用reset --soft的方式指定版本为最初记录的版本号,把指针挪回最初的位置。但是soft的方式只挪指针,不会更改工作区的文件。所以看上去就是基于最新版本把文件全部修改为了指定的版本文件的内容。
  4. 使用commit提交,就可以保留历史版本回退了

在这里插入图片描述

练习:
  1. 创建本地仓库,完成若干版本的添加、提交、回退操作

  2. 在本地仓库创建新的分支,在分支和主分支之间创建一些冲突,然后合并新分支到主分支

  3. 注册一个gitee或者github账号,创建一个远程仓库,跟本地仓库关联。把本地仓库推送到远端。

  4. 在本地另一个文件夹中,从远端克隆仓库到本地。进行修改操作,推送到远端。

  5. 在两个本地仓库都关联上远端后,人为创建一些冲突。解决冲突并最终同步代码。

  6. 多人创建开发小组,模拟实际开发中的情况,处理git协同。

  7. 注册一个gitee或者github账号,创建一个远程仓库,跟本地仓库关联。把本地仓库推送到远端。

  8. 在本地另一个文件夹中,从远端克隆仓库到本地。进行修改操作,推送到远端。

  9. 在两个本地仓库都关联上远端后,人为创建一些冲突。解决冲突并最终同步代码。

  10. 多人创建开发小组,模拟实际开发中的情况,处理git协同。


http://www.ppmy.cn/news/31719.html

相关文章

小黑子—Java从入门到入土过程:第二章

Java零基础入门2.0Java系列第二章1. 注释和关键字2. 字面量3. 变量3.1 基本用法3.2 使用方式3.3 注意事项4. 变量练习5. 计算机中的数据存储5.1 计算机的存储规则5.2 进制5.3 进制间转换二进制转十八进制转十十六进制转十十进制转其他进制6. 数据类型7. 定义变量的练习8. 标识符…

运动蓝牙耳机什么牌子好,比较好的运动蓝牙耳机推荐

现在市面上的运动蓝牙耳机越来越多,在选择耳机的时候应该如何入手呢?最重要的是需要按照自己的需求来选择,但在耳机的配置上不能忽视的是耳机的防水等级,运动耳机对防水等级的要求更高,这样能够更好地防御汗水浸湿耳机…

【C#进阶】C# 反射

序号系列文章11【C#基础】C# 预处理器指令12【C#基础】C# 文件与IO13【C#进阶】C# 特性文章目录前言1,反射的概念2,使用反射访问特性3,反射的用途4,反射的优缺点比较4.1 优点:4.2 缺点:5,System…

Jetpack Compose 学习汇总

关于 Jetpack Compose 的学习本想只是简单的快速学习一下,结果万万没想到,竟然一下子折腾了好几个月。。。 下面将之前记录的 Jetpack Compose 相关的学习博文进行一个汇总链接整理,方便我以后自己查阅,也希望能帮到一些有正在学…

Web漏洞-XXE漏洞(详细)

XXE漏洞XXE全称为XML External Entity Injection即XMl外部实体注入漏洞原理:XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载, 导致用户可以控制外部的加载文件,造成XXE漏洞。XXE漏洞触发点往往是可以上传xml文件的位…

实现VOC数据集与COCO数据集格式转换

实现VOC数据集与COCO数据集格式转换2、将voc数据集的xml转化为coco数据集的json格式2、COCO格式的json文件转化为VOC格式的xml文件3、将 txt 文件转换为 Pascal VOC 的 XML 格式<annotation><folder>文件夹目录</folder><filename>图片名.jpg</file…

线程等待/休眠/状态及 Runnable 和 Callable 的简单使用及原理

关于线程和进程的基本概念☛操作系统中线程和进程的概念理解 这篇文章已经有了很详细的解释, 接下来主要来讲讲线程等待与线程休眠 / 线程的几种状态 / Runnable 和 Callable 与 Thread 的概念和区别及 Executor 框架是什么样的. 关于线程1 线程等待与线程休眠2 线程一共有哪些…

金三银四、金九银十 面试宝典 MySQL面试题 超级无敌全的面试题汇总(超万字的面试题,让你的MySQL无可挑剔)

MySQL数据库 - 面试宝典 又到了 金三银四、金九银十 的时候了&#xff0c;是时候收藏一波面试题了&#xff0c;面试题可以不学&#xff0c;但不能没有&#xff01;&#x1f941;&#x1f941;&#x1f941; 一个合格的 计算机打工人 &#xff0c;收藏夹里必须有一份 MySQL 八…