快速了解 git 和 github 是什么,30 分钟速通版

安装 git

安装git和安装node、qq这种软件是一样的,到官网去下载安装就好了,记得选择正确的版本,mac和win需要下载的版本是不一样的。

  • git下载页面

配置 git

熟悉环境变量的小伙伴应该了解这一步的重要性,如果没有相关经验也不要紧,配置git可以暂时理解成类似qq的登录,这个登录也是有记住密码自动登录选项的。

使用这2个命令来配置你的身份(名称和邮箱)

  • git config --global user.name "woshishei"
  • git config --global user.email woshishei@example.com

这个命令在终端输入,这里需要了解一下终端如何使用:打开你的终端可以看见 C:\ 这样的路径,这就相当于,你打开了这个 C:\ 文件夹;

当你在终端输入指令 mkdir 新建文件夹,首先会在你这个路径下操作,也就是创建了一个文件夹,他的路径是 C:\新建文件夹,接下来git初始化仓库等等,也是在你终端所在路径操作的;

注意到上面的指令有一个 --global,这个指令是对git进行全局配置,他就会把你的名字和邮箱存在git自己管理的某个区域,如果不写 --global,那就是控制你当前所在文件夹下的git仓库的信息了。

第一个 git 仓库

  • 通过命令 git init 可以把当前文件夹变成一个仓库,不需要联网你就可以使用大部分的功能。
  • 或者找到别人的项目,通过另一个命令获取开源仓库代码,比如 git clone https://github.com/nesb01t/RPALite.git,这样就会把代码下载下来,同时也已经是一个 git 仓库。

这样操作获得的2种仓库,在本地都可以使用绝大部分功能,到这里你应该已经学会了如何下载别人的开源代码了。

git 基本功能 / 本地仓库

接下来介绍一个文件跟踪的概念,git 版本管理会追踪文件,通过追踪后续你进行的修改/删除/创建等操作,来定义不同的版本。

比如今天你写了version1.0,明天写了version1.2,git 就会发现,1.0到1.2进行了哪些更改?git 追踪的是这些文件的变动。

  • 跟踪文件: git add [name]
  • 取消跟踪: git rm [name]
  • 保留在目录但不被跟踪: git rm --cache [name]

add 修改跟踪文件并放入暂存区

随后,当你修改了 跟踪中 的文件,文件便会进入 已修改 状态;

此时再输入 git add [name],他就会变成 已暂存 状态,并自动放入 git 的暂存区。

如果你手滑了,也可以输入 git reset HEAD [name],就恢复 已修改 状态了。

此时我们注意到,一个 git 仓库里实际上有4种类型的文件:

  1. 未跟踪:和 git 仓库没有任何关系的文件
  2. 未修改:被跟踪的文件,但并没有参与修改
  3. 已修改:和上个版本不同的文件,也就是经过修改了
  4. 暂存:在暂存区,等待提交到新版本的文件

commit 提交暂存区,产生新版本

那么怎么提交暂存区的代码呢?使用命令 git commit 提交暂存,此时会有几个可能:

  • 如果你用的是vscode集成的git工具,他会让你直接在框里输入本次提交的信息
  • 如果你用的是git bash或者终端,会进入vim模式输入本次提交的信息,重点介绍一下如何用vi/vim来提交:
    1. i 键进入输入模式
    2. 输入本次提交的信息
    3. Esc 键,然后按 冒号-w-q
  • 你也可以用 git commit -m "提交的信息" 来避免上面2个可能的发生,对于初学者来说vi/vim可能会比较别扭,这里推荐直接使用 git commit -m "提交的信息"
PS E:\CloudShip> git commit -m "Test"
[backend-dev 97a49ef] Test1 file changed, 1 insertion(+)

如果你手滑了,输入 git reset HEAD~ --soft 就可以撤回这次提交

你可能会有疑问,这个reset是什么,head又是什么,暂时先记住前面的命令的功能,涉及到的内容后面会深入讲。

status 查看文件的修改和暂存状态

输入 git status 你就可以看到当前有哪些文件被修改过了:

  • 显示的红色文件代表:修改但没暂存
  • 显示的绿色文件代表:暂存但没提交
Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified:   backend/controller/auth.js

diff 查看已修改而未进入暂存区的文件状态

上面的 diff 指令可以看哪些文件有变动; 而使用命令 git diff 可以看到 已修改/未进入暂存区 的文件里面具体到每一行的变动。

diff --git a/backend/controller/auth.js b/backend/controller/auth.js
index 0bb29d4..71e2806 100644
--- a/backend/controller/auth.js
+++ b/backend/controller/auth.js
@@ -36,6 +36,7 @@ class AuthController {ctx.status = 200;ctx.body = "creating new account";return;
+      return;}

log 查看过去的提交日志

输入命令 git log 可以查看历史的提交记录,比如:

commit d56ba11a294d229a0993facc2591a720faa04274 (HEAD -> backend-dev)
Author: nesb01t <nesb01t@hotmail.com>
Date:   Sat Apr 15 12:23:11 2023 +0800test

这里 commit 后面的 d56ba11a294d229a0993facc2591a720faa04274 是一个哈希值,是唯一的,我们可以通过这个哈希值找到我们本次的一个提交;

下面则包含了作者,日期,提交时输入的信息。

通过 git log --pretty=oneline 可以美化我们的输出到一行,还可以自定义格式等等,请自行查阅:

791fd226f01affae4c4e6224b8760dd5799622ac update List
43e319e0fcb412c19dccc0c832ac35352a75af3b Merge pull request #35 from Nesb01t/frontend-yjh
5911ab7f3b62dea34051803ef745c59db1fceb06 Merge pull request #34 from Nesb01t/backend-dev
bdd956e133fe0a5de6b92f374a99b78385cb5b53 Update 第一周
a5132f098fbae9a7d0888818b9eedbfc1b5d90b9 Merge pull request #33 from Nesb01t/frontend-yjh
2c983d840864dd099c49e54d029c38bf41bab01b Login and studentinfo

git 远程仓库

首先你需要准备一个 github / gitee 账号,这个 github / gitee 属于 代码仓库托管平台,git 的出现让程序员之间的协作变得更加容易,因为我们可以远程在同一段代码上进行不同的工作,最后再合并代码,这个 github / gitee 就是用来保存这坨代码的地方,而 git 是这个平台工作的核心机制。

打开 github 平台,点击 new repository 就可以新建一个仓库。

完成必要信息的填写后,注意选择 Public 就是开源,接下来你的代码将能被所有人看见,共享给 github 平台上的每一位用户。

创建成功以后,你的仓库就会获得一个专属的链接,比如 https://github.com/nesb01t/RPALite.git

remote 链接远程仓库

  • 输入 git remote 可以查看现在有哪些远程仓库链接。
  • 通过命令 git remote add [name] [link] 可以添加远程仓库链接,比如 git remote add origin https://github.com/nesb01t/RPALite.git
  • 通过命令 git remote rename [name] [newName] 可以更改远程仓库名字

push 推送代码到远程仓库

通过命令 git push [remoteName] [branchName] 可以将代码推送到远程仓库,比如 git push origin master,意思是推送到名为 origin 的仓库,推送的分支是 master,分支将会在后面进行更细的解释。

[可选] 利用 ssh 公私钥进行远程鉴权

当你连接远程仓库进行登录时,可能遇到 账号+密码 无法使用的情况,这时候可以使用更方便并且更安全的 ssh 登录,这里篇幅较多,暂时不展开讲,请感兴趣的小伙伴自行尝试 google 研究~

git 分支管理

分支的概念

每次我们进行 commit 提交活动,都会产生一个哈希值,类似这样 39a1492c8a 的值,代表了你某次提交的整个对象;

分支就是包含了这个哈希值的文件,也可以简单理解成 指向某个提交对象的指针

当我们初始化仓库时,也就新建了一个 master 分支; 第二次提交时,master 分支也就跟着一起进行向前的移动!

新分支的产生

当我们新建一个分支 newBranch,在这个新建的分支上进行修改,此时就会形成2个不同的分支,一个是master,另一个是newBranch

分支模型中,常见的流模型

一般有这么几个分支:

  • master - 主分支,比如1.0 -> 1.0.1 -> 1.1
  • hot fixes - 修复bug分支
  • release - 推动版本前进的运行分支
  • develop - 构成release的开发分支
  • feature - 构成develop的小特性更新分支

这几个分支从下往上一层层汇到一起,形成了分支模型,比如:

  • 从1.0作为起始点,分出了develop分支进行1.1版本的开发,同时分出了hot fixes进行1.0版本的bug修复,随后合并到master分支产生了1.0.1版本;
  • 从1.0分出的develop分支,里面产生了多个feature分支,合并到一起的develop分支最终汇总到一起形成一个release,待release成熟以后合并到master分支产生了1.1版本;

log 查看分支

commit ab829b0e37904181952f37cdddf9169b1697efae (HEAD -> master, origin/master)
Author: nesb01t <nesb01t@hotmail.com>
Date:   Mon Apr 17 17:24:06 2023 +0800Update 4月16更新

当你输入 git log,这个括号里就是我们的分支,会发现我们在 master 分支;

后面还有一个 origin/master 代表远程仓库上也是这个 master 分支;

这个 HEAD 的意思是我们现在在这个 master 分支上,而不是 origin/master 分支。

status 查看分支

输入 git status,可以看见:

On branch master
Your branch is up to date with 'origin/master'.

代表我们现在在 master 分支上,和远端的 origin/master 同步;

branch 查看分支

常用的是输入 git branch / git branch --list查看本地 有哪些分支:

  backend-dev
* masterorigin

其中这个带 星号 的就是我们当前所在的分支~

branch 创建分支

直接输入 git branch newBranch1,就 创建 了一个叫 newBranch1 的新分支;

  backend-dev
* masteroriginnewBranch1

checkout 切换分支

输入 git checkout newBranch1,就 切换 到了 newBranch1 分支; 此时输入 git branch 就可以看到现在切换成功了:

  backend-devmasterorigin
* newBranch1

另外输入 git checkout -b newBranch2,可以直接新建一个分支 并切换 到那个新建好的分支上~

merge 合并分支

我想让 masterFeature1 进行合并,怎么操作呢?

  1. 切换到 master 分支
  2. 输入 git merge Feature1

分支中的冲突:当2个分支同时修改了一个文件,即有可能产生冲突,一般提示为

Auto-merging <文件名>
CONFLICT (content): Merge conflict in test_file
Automatic merge failed; fix conflicts and then commit the result.

此时先输入 git status 确认哪里有冲突,手动解决冲突 之后 commit 即可

stash 暂存功能

当你的代码写到一半,需要回到 master 分支进行操作:此时你是无法直接切换的,因为你的工作目录中有被修改的文件!

你可以通过 commit 把现在写到一半的代码进行提交,但更好的方法是直接 stash 放置到暂存区

  1. 当你代码写到一半,此时输入 git checkout Feature1,会提示在切换分支之前,请你 commit 或者 stash 代码;
  2. 输入 git stash 之后即可暂存,此时你输入 git status 会发现目录是干净的,再 checkout 即可~
  3. 当你完成,再回来怎么恢复呢?输入 git stash apply 即可恢复之前编辑的状态。

如果你保存了好几次,即输入了好几次 git stash,你可以通过 git stash list 来回看之前提交的几次 stash 暂存区代码。

git 撤销操作

很多时候会遇到需要撤销操作,见下~

reset 回弹

  • git reset head~ 文件已修改,但不再是暂存状态了
  • git reset head~ --soft 暂存状态仍存在
  • git reset head~ --hard 直接放弃数据,不推荐使用

head 和 波浪线 ~

在指令 git reset head~ 中,head 指的是当前最新的一次提交,head~ 指的是 head 上一次的提交,同理可以使用 head~2 代表上上次的提交。

rebase 变基

比如说我开发了A分支,同事开发了B分支,我们可以使用合并,也可以使用变基~

  1. 切换到 B 分支
  2. 输入 git rebase A
  3. 此时就会把 B 分支的修改移动到 A 上

远程慎用,当你的同事在你上面盖第二层楼,你变基,等同事盖完有可能发现你这个第一层没了。

总结

多做项目上手操作,无他唯手熟尔

本文由博客一文多发平台 OpenWrite 发布!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/4290.shtml

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

相关文章

分段函数拟合-施加分段点连续约束条件|【Matlab源码+视频介绍】

专栏导读 作者简介&#xff1a;工学博士&#xff0c;高级工程师&#xff0c;专注于工业软件算法研究本文已收录于专栏&#xff1a;《复杂函数拟合案例分享》本专栏旨在提供 1.以案例的形式讲解各类复杂函数拟合的程序实现方法&#xff0c;并提供所有案例完整源码&#xff1b;2.…

解决eureka服务注册名报错

解决eureka服务注册名报错 解决eureka服务注册名报错简介正文使用RestTemplate.getForObject( url&#xff0c;Class)方法中&#xff0c;url直接使用服务注册名进行拼接后无法正常远程调用。如下 报错404&#xff0c;说明没访问到我的解决方法&#xff1a;换依赖版本原来的版本…

PotatoPie 4.0 实验教程(27) —— FPGA实现摄像头图像拉普拉斯边缘提取

拉普拉斯边缘提取有什么作用&#xff1f; 拉普拉斯边缘检测是一种常用的图像处理技术&#xff0c;用于检测图像中的边缘和边界。它的主要作用包括&#xff1a; 边缘检测&#xff1a;拉普拉斯算子可以帮助检测图像中的边缘&#xff0c;即图像中亮度快速变化的位置。这些边缘通常…

数据集笔记:处理北大POI 数据:保留北京POI

数据来源&#xff1a;Map POI (Point of Interest) data - Official data of the contest (pku.edu.cn) windows 下载方法&#xff1a;数据集笔记&#xff1a;windows系统下载北大开放数据研究平台的POI数据-CSDN博客 1 读取数据 1.1 列出所有的文件 dir1D:/data/PKU POI/2…

CentOS 9 (stream) 安装 nginx

1.我们直接使用安装命令 dnf install nginx 2.安装完成后启动nginx服务 # 启动 systemctl start nginx # 设置开机自启动 systemctl enable nginx# 重启 systemctl restart nginx# 查看状态 systemctl status nginx# 停止服务 systemctl stop nginx 3.查看版本确认安装成功…

springboot3整合redis

redis在我们的日常开发中是必不可少的&#xff0c;本次来介绍使用spring boot整合redis实现一些基本的操作&#xff1b; 1、新建一个spring boot项目&#xff0c;并导入相应的依赖&#xff1b; <dependency><groupId>org.springframework.boot</groupId><…

MySQL数据库安装——zip压缩包形式

安装压缩包zip形式的 MySQL 8数据库 一 、先进入官网下载 https://dev.mysql.com/downloads/mysql/ 二、解压到某个文件夹 我解压到了D:\mysql\mysql8 下面 然后在这个文件夹下手动创建 my.ini 文件和 data 文件夹 my.ini 内容如下&#xff1a; 注意 basedir 和 datadi…

[leetcode] B树是不是A树的子结构

给定两棵二叉树 tree1 和 tree2&#xff0c;判断 tree2 是否以 tree1 的某个节点为根的子树具有 相同的结构和节点值 。 注意&#xff0c;空树 不会是以 tree1 的某个节点为根的子树具有 相同的结构和节点值 。 示例 1&#xff1a; 输入&#xff1a;tree1 [1,7,5], tree2 [6,…

基于深度学习的车牌识别

如果你认为车牌只是车子的‘名字’&#xff0c;那么是时候让你见识一下&#xff0c;当科技赋予它‘超能力’时会发生什么&#xff1f; 上效果图&#xff1b; 这就是车牌识别的力量&#xff0c;下面是主函数代码&#xff1a; # -*- coding: UTF-8 -*- import argparse import …

服务器硬件:裸金属安装 VMware ESXi

写在前面 工作中遇到&#xff0c;简单整理博文内容涉及 裸金属安装VMware ESXi 基本步骤理解不足小伙伴帮忙指正 不必太纠结于当下&#xff0c;也不必太忧虑未来&#xff0c;当你经历过一些事情的时候&#xff0c;眼前的风景已经和从前不一样了。——村上春树 一、准备工作 确…

1. 房屋租赁管理系统(Java项目 springboot/vue)

1.此系统的受众 1.1 在校学习的学生&#xff0c;可用于日常学习使用或是毕业设计使用 1.2 毕业一到两年的开发人员&#xff0c;用于锻炼自己的独立功能模块设计能力&#xff0c;增强代码编写能力。 1.3 亦可以部署为商化项目使用。 2. 技术栈 jdk8springbootvue2mysq5.7&8…

基于SpringBoot + Vue实现的家政服务管理系统设计与实现+毕业论文+答辩PPT+指导搭建视频(包运行成功)

目录 项目介绍 论文展示 资源获取 项目介绍 家政服务管理平台是一个管理信息系统&#xff0c;为了宣传的需要&#xff0c;为了给用户提供方便快捷的服务&#xff0c;从而设计了家政服务管理平台。管理员可以通过这个系统把家政服务信息发布出去&#xff0c;可以方便用户快…

重庆市工程技术建设专业职称申报条件

重庆市工程技术建设专业职称申报条件链接重庆市人力资源和社会保障局 重庆市住房和城乡建设委员会关于印发重庆市工程技术建设专业职称申报条件的通知_重庆市人力资源和社会保障局类别基本条件业绩成果备注助理工程师具备硕士学位或第二学士学位&#xff1b;或具备大学本科学历…

Flink 实时数仓(二)【ODS 层开发】

前言 最近投了不少的实习&#xff0c;也收到不错的反馈&#xff0c;虽然是中小公司偏多&#xff0c;但是毕竟现在这个环境双非进大厂实习可不同当年了。可惜的是学院不放人&#xff0c;无奈啊&#xff0c;遍身罗绮者&#xff0c;不是养蚕人。我累死累活肝了两年了&#xff0c;好…

终端安全管理软件哪个好?

终端安全管理软件是保障企业信息安全的重要工具。 它们能够有效地防范恶意软件、黑客攻击和其他安全威胁&#xff0c;并提供多方面的终端设备安全保护措施。 终端安全软件的功能和保护机制各不相同&#xff0c;这就需要企业根据自身的需求和情况来进行评估和选择。 下面总结了…

spring的常用注解

目录 1.前言 2.web url映射 2.1RequestMapping 2.2PostMapping 2.3GetMapping 3.参数接受和接口响应 3.1RequestParam 3.2RequstBoby 3.3ResponseBoby 3.4RestController 4.bean的存储 4.1Controller 4.2Service 4.3Repository 4.4Compontent 4.5Configuration …

短视频生成背景文字工具(前端工具)

过年这两天有些无聊就刷刷抖音&#xff0c;刷着刷着自己也蠢蠢欲动&#xff0c;想发上几个&#xff0c;可是却找不到合适自己的模板。由于个人喜欢一些古诗文之类的&#xff0c;所以自己简单的编写了一个小工具&#xff0c;如下图&#xff1a; 当设置好了之后&#xff0c;将浏…

关于Spring Aop的通知类型

一、概述 1.1 通知类型 为了符合各种流程处理&#xff0c;通知类型提供了5种&#xff0c;可以对目标方法进行全方位处理&#xff0c;如下所示&#xff1a; 通知类型说明前置通知&#xff08;Before advice&#xff09;在某连接点之前执行的通知&#xff0c;但这个通知不能阻止…

dart-sdk 安装以及vscode开发工具安装dart

1.安装dart-sdk 官方文档&#xff1a;&#xff1a;Dart 编程语言主页 | Dart 中文文档 | Dart 里面是命令行安装。 也可以使用安装包安装&#xff1a; 地址&#xff1a;https://www.gekorm.com/dart-windows/ 2.测试dart-sdk 安装成功与否 打开cmd &#xff0c;输入 dar…

Python数据分析实验二:Python数据预处理

目录 一、实验目的与要求二、实验任务三、主要程序清单和运行结果&#xff08;一&#xff09;对chipotle.csv文件的销售数据进行分析&#xff08;二&#xff09;对描述泰坦尼克号成员的信息进行可视化和相关分析 四、实验体会 一、实验目的与要求 1、目的&#xff1a;   掌握…