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

news2024/11/25 4:52:07

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.coloradmin.cn/o/403512.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Cloud ( Consul注册、发现 )

操作步骤: 安装Consul服务端在服务内添加客户端依赖修改配置类,添加注解编写yml文件一、安装Consul服务端 链接:https://www.consul.io/downloads.html,解压 开启cmd,进入你的Consul解压路径,我是在E盘 …

扩展欧几里得算法及其应用

前言 由于数论的板子真的很抽象,也很难背,所以特此记录扩展欧几里得算法的板子和它的用途 本篇文章只涉及应用,不涉及证明,如需理解证明还请各位移步其他优秀的讲解! 扩展欧几里得算法 先粘一下板子的代码 typedef lo…

JAVA面向对象特征之——封装

4.封装 private关键字 是一个权限修饰符 可以修饰成员(成员变量和成员方法) 作用是保护成员不被别的类使用,被private修饰的成员只在本类中才能访问 针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作 提供 “get变量名()…

面向数据安全共享的联邦学习研究综述

开放隐私计算 摘 要:跨部门、跨地域、跨系统间的数据共享是充分发挥分布式数据价值的有效途径,但是现阶段日益严峻的数据安全威胁和严格的法律法规对数据共享造成了诸多挑战。联邦学习可以联合多个用户在不传输本地数据的情况下协同训练机器学习模型&am…

【SpringCloud】SpringCloud详解之Feign远程调用

目录前言SpringCloud Feign远程服务调用一.需求二.两个服务的yml配置和访问路径三.使用RestTemplate远程调用(order服务内编写)四.构建Feign(order服务内配置)五.自定义Feign配置(order服务内配置)六.Feign配置日志(oder服务内配置)七.Feign调优(order服务内配置)八.抽离Feign前…

SNS (Simple Notification Service)简介

SNS (Simple Notification Service) 是一种完全托管的发布/订阅消息收发和移动通知服务,用于协调向订阅终端节点和客户端的消息分发。 和SQS (Simple Queue Service)一样,SNS也可以轻松分离和扩展微服务,分布式系统和无服务应用程序&#xf…

九龙证券|直逼1.5万亿!A股融资余额创年内新高,青睐这些行业和个股

2023年以来,A股商场震动重复,商场走势整体先扬后抑,各路资金看法纷歧,但数据显现,融资客在此期间整体持续净买入,未受到商场动摇的明显冲击,融资余额日前已迫临1.5万亿元,创出年内新…

磨金石教育摄影技能干货分享|烟花三月下扬州,是时候安排了!

人间三月最柔情,杨柳依依水波横。三月的风将要吹来,春天的门正式打开。对中国人来说,古往今来,赏春最好的地方是江南。人人都说江南好,可是江南哪里好呢?古人在这方面早就给出了答案:故人西辞黄…

使用高精度秒表StopWatch测试DateTime.Now的精度

StopWatch使用的命名空间:using System.Diagnostics;StopWatch的使用方法:创建Stopwatch对象:stopwatch;stopwatch计时表开启:stopwatch.Start();stopwatch计时表关闭:stopwatch.Stop();计算stopwatch.Stop…

【剧前爆米花--爪哇岛寻宝】进程的调度以及并发和并行,以及PCB中属性的详解。

作者:困了电视剧 专栏:《JavaEE初阶》 文章分布:这是关于进程调度、并发并行以及相关属性详解的文章,我会在之后文章中更新有关线程的相关知识,并将其与进程进行对比,希望对你有所帮助。 目录 什么是进程/…

redis布隆过滤器与四个缓存问题

目录布隆过滤器定义特性使用场景解决缓存穿透的问题黑白名单校验底层原理哈希冲突案例添加key查询key总结四个缓存问题缓存雪崩定义解决方案缓存穿透定义解决方案方案一方案二(guava实现)代码案例源码分析方案三(RedisSon实现)代码实现方案四(直接安装redis插件,应用层解决方案…

港科夜闻|香港科大与中国联通成立联合实验室,推动智慧社会研究发展

关注并星标每周阅读港科夜闻建立新视野 开启新思维1、香港科大与中国联通成立联合实验室,推动智慧社会研究发展。香港科大与中国联通于3月9日签署两份协议以加强战略合作,并成立「香港科技大学 - 中国联通智慧社会联合实验室」,就香港科大建构…

基于支持向量机SVM的风电场NWP数据预测,SVM的详细原理

目录 支持向量机SVM的详细原理 SVM的定义 SVM理论 Libsvm工具箱详解 简介 参数说明 易错及常见问题 SVM应用实例,基于SVM的风电场NWP预测 结果分析 展望 支持向量机SVM的详细原理 SVM的定义 支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定…

江苏专转本转本人后悔排行榜

江苏专转本转本人后悔排行榜 一、复习的太迟: 后悔指数:五颗星。 复习越到最后,时间一天天变少,要复习的内容还有很多,很多人都后悔没有早早开始,总想着多给我两月一定会考上的。 担心时间不够用,那就努力利…

【论文阅读】浏览器扩展危害-Helping or Hindering? How Browser Extensions Undermine Security

本文来源于ACM CCS 2022; https://dl.acm.org/doi/10.1145/3548606.3560685 摘要 “浏览器扩展”是轻量级的浏览器附加组件,使用各个浏览器特定的功能丰富的JavaScript api,为用户提供了额外的Web客户端功能,如改进网站外观和与…

【id:21】【20分】A. DS单链表--类实现

题目描述用C语言和类实现单链表,含头结点属性包括:data数据域、next指针域操作包括:插入、删除、查找注意:单链表不是数组,所以位置从1开始对应首结点,头结点不放数据类定义参考输入n第1行先输入n表示有n个…

Amazon GuardDuty 的新增功能 – Amazon EBS 卷的恶意软件检测

亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术,观点,和项目,并将中国优秀开发者或技术推荐给全球云社区。如果你还没有关注/收藏…

字符函数和字符串函数(详解)

前言:内容包括:strlen,长度不受限制的字符串函数(strcpy,strcat,strcmp) 长度受限制的字符串函数(strncpy,strncat,strncmp),strstr …

Java笔记029-泛型

泛型泛型的理解和好处看一个需求请编写程序,在ArrayList中,添加3个Dog对象Dog对象含有name和age,并输出name和age(要求使用getXxx)先用传统的方法来解决->引出泛型package com15.generic;import java.util.ArrayList;/*** author 甲柒* ve…

Docker Remote API未授权访问

目录Docker简述Docker 2375端口安全风险Docker命令连接利用声明:本文仅供学习参考,其中涉及的一切资源均来源于网络,请勿用于任何非法行为,否则您将自行承担相应后果,本人不承担任何法律及连带责任。Docker简述 Docke…