【Git】P1 Git 基础

news2024/9/21 20:50:41

Git 基础

  • Git 基本概念
    • 集中式版本控制工具 与 分布式版本控制工具
    • Git 下载与安装
    • Bash 初始设置
    • 创建本地仓库
    • Git 三区概念
  • 一个简单的提交流程
  • 更改文件后再次提交
  • git 实现版本切换
    • 查看提交日志
    • 设置 git 快捷键
    • 版本切换(一)
    • 版本切换(二)
  • 同文件夹下只想让部分文件 git 管理


千里之行,始于足下

Git 学习目标:

  1. git 基本概念
  2. git 工作流程
  3. git 常用命令
  4. git 代码托管
  5. idea 操作 git

Git 基本概念

git 的实际使用场景,为什么用 git?

  1. 防止电脑嘎嘣脆,啥啥都没了;
  2. 代码版本控制,突然发现错了好几个版本,咱还能恢复到之前的之前的之前的版本;代码回滚与还原;
  3. 协同开发,多个人同时维护同一个项目;
  4. 代码追溯,通过线上日志找到什么时候出的错

集中式版本控制工具 与 分布式版本控制工具

集中式版本控制工具:

版本库是存放在中央服务器,每个人工作时候必须联网,从中央服务器下载代码,修改后上传到中央服务器,提交到中央版本库。比如 SVNCVS,但是已经比较过时;

分布式版本控制工具:

每个人的电脑都是一个完整的版本库,工作时候无需联网,多人协作只需要各自的修改推给对方,就可以看到对方的修改了。比如 Git

虽然 git 也有共享版本库,但是 git 由于每个人的电脑都包含完整的版本库,所以不怕中央挂掉,挂了从任何一个电脑上上传即可。


Git 下载与安装

下载网址:https://git-scm.com/download/win

安装注意事项:(没有提到直接默认 next 即可)

选择英文地址:

在这里插入图片描述

给桌面加个图标:

在这里插入图片描述
默认 vim, 有关 vim 操作博文:https://blog.csdn.net/weixin_43098506/article/details/129336983

在这里插入图片描述

主干名,默认其为 master

默认选择第二个,第一个是只从 git bash 进入 git,第二个是可以从 bash 以及 第三方软件进入;

在这里插入图片描述

默认选择 ssh可执行文件,默认选择 https 传输后端,配置行尾转换,配置终端模拟器,全部默认;

恭喜安装完成!!!

推荐安装介绍博客:
https://www.cnblogs.com/kevinzhushrek/p/16092144.html


Bash 初始设置

Git GUI:Git 提供的图形界面工具;
Git Bash:Git提供的命令行工具;

安装完成后最重要一步是设置邮箱以及用户名;

打开 git bash,设置自己用户名以及邮箱

git config --global user.name "XU Hongduo"
git config --global user.email "xxxxxxx@hotmail.com"

检查自己设置好的用户名以及邮箱

git config --global user.name
git config --global user.email

创建本地仓库

自定义一个文件夹下,右键新建文件夹,命名英文,然后右键 Git Bash here,执行指令:

git init

在这里插入图片描述


Git 三区概念

在 Git 中,有三区概念,工作区,暂存区以及仓库。

工作区: 新创建未加到仓库中的文件;已加到仓库但是修改了没提交的文件;
暂存区: 提交到仓库之前的缓存区,工作区的文件通过 add 指令;
仓库: 进行版本控制的文件目录;

图片来源于黑马,仅用于学习


一个简单的提交流程

首先从工作区提交到暂存区

git add "test.txt"

可以查看状态

git status

在这里插入图片描述

然后从暂存区提交到仓库

git commit -m "first submit"
# first submit 为注释内容

再次查看状态

git status

在这里插入图片描述


更改文件后再次提交

对上述已提交的 test.txt 文件做更改,执行 status 查看状态

git status

在这里插入图片描述

重新提交并上传

git add .
git commit -m "second submit"

在这里插入图片描述
P.S. 少个 -m 里 t…


git 实现版本切换

查看提交日志

当一个文件多次提交后,可以查看日志

git log
git log --pretty=oneline
# 将提交的信息显示为一行
git log --pretty=oneline --abbrev-commit
# 将提交的信息显示为一行
# 使得输出的 commitId 更简短
git log --pretty=oneline --abbrev-commit --all
# 将提交的信息显示为一行
# 使得输出的 commitId 更简短
# 显示所有分支
git log --pretty=oneline --abbrev-commit --all --graph
# 将提交的信息显示为一行
# 使得输出的 commitId 更简短
# 显示所有分支
# 以图的形式显示(该图非图片,而是结构)

在这里插入图片描述

插播:最后一条指令太过于冗长,我们可以通过设置快捷键设置自创一条指令。


设置 git 快捷键

在用户目录下创建 .bashrc 文件,所谓用户目录,对于我的电脑为 C:\Users\xhong

touch .bashrc

打开 .bashrc 文件,然后配置日志 log 快捷键 以及 ll 快捷键

alias git-log="git log --pretty=oneline --abbrev-commit --all --graph"

alias ll="ls -al"

在这里插入图片描述

保存退出,配置完成!!!


版本切换(一)

首先查看所有提交 log id

git log --pretty=oneline --abbrev-commit --all --graph
# 未设置快捷键
git-log
# 设置了快捷键

在这里插入图片描述

然后执行回退版本指令

git reset --hard beb4c4c

在这里插入图片描述

注意 beb4c4c 是我的一次 submit -m 的 id

再次查看文件,发现已经回滚到之前只有一行内容的情况。


版本切换(二)

如果我想回到回滚前的版本,但是 log 已经看不到回滚前的版本号了,怎么办?

git reflog

可以查看回滚记录,从而找回那个版本号

再次版本切换到回滚前的就可以

git reset --hard b133242

在这里插入图片描述

再次查看内容,发现又回到了两行的内容。


同文件夹下只想让部分文件 git 管理

问题描述

如果一个文件夹下我只有部分文件想通过 git 进行管理,该如何做???

案例解析

首先我们先初始化一个目录,然后创建两个文件 test.txt 以及 test1.a,

git init
touch test.txt
touch test1.a

我们首先查看有哪些文件被 git 管理

git status

在这里插入图片描述

我希望通过 git 对 test.txt 进行管理,而不对 test1.a 进行管理;

首先我们创建一个名为 .gitignore 的文件,用于记录当前文件夹中不被管理的文件名称;

touch .gitignore

通过 vim 打开.gitignore 文件

vim .gitignore

将不希望被 git 管理的文件名 test1.a 添加到 .gitignore 中

在这里插入图片描述

然后我们能再执行查看 git 状态命令,可以发现 test1.a 文件已经不被管理

在这里插入图片描述


下一节:
链接:

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

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

相关文章

华为OD机试题,用 Java 解【数据分类】问题

华为Od必看系列 华为OD机试 全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典使用说明 参加华为od机试,一定要注意不…

0104路径搜索和单点路径-无向图-数据结构和算法(Java)

文章目录2 单点路径2.1 API2.2 算法实现后记2 单点路径 单点路径。给定一幅图和一个起点s,回答“从s到给定的目的顶点v是否存在一条路径?如果有,找出这条路径。”等类似问题。 2.1 API 单点路径问题在图的处理邻域中十分重要。根据标准设计…

PHP, Python和Java的区别

PHP, Python和Java是广泛使用的编程语言。每种编程语言都有其独特的优点和缺点。在本文中,我们将对这些编程语言进行分析,并探讨它们在不同应用场景中的最佳用途。一、PHPPHP是一种广泛使用的Web编程语言,它可以在服务器上运行,并…

程设 | week2:STL

📚回顾C 🐇struct和class 从功能上说,struct和class几乎没什么区别在不显式声明的情况下,struct成员默认为public,class默认为private和c语言的struct不同,c的struct可以定义成员函数,重载运算…

G6绘制树形图(自定义节点、自定义边、自定义布局)

目录1 设计节点1.1 定义节点和文本1.2 增加节点1.3 自定义节点样式2 树图配置2.1 允许使用自定义dom节点2.2 内置行为自定义边layout布局demo1 设计节点 在 registerNode 中定义所有的节点 G6.registerNode(tree-node, {drawShape: function drawShape(cfg, group) {定义图中…

aws appconfig 理解和使用appconfig对应用程序进行动态配置

参考资料 Automating Feature Release using AWS AppConfig Integration with AWS CodepipelineDeploying application configuration to serverless: Introducing the AWS AppConfig Lambda extensionCreate a pipeline that uses Amazon AppConfig as a deployment provider…

秒懂算法 | 搜索基础

本篇介绍了BFS和DFS的概念、性质、模板代码。 01、搜索简介 搜索,就是查找解空间,它是“暴力法”算法思想的具体实现。 暴力法(Brute force,又译为蛮力法):把所有可能的情况都罗列出来,然后逐一检查,从中找到答案。这种方法简单、直接,不玩花样,利用了计算机强大的…

JavaScript 中的 String 类型 模板字面量定义字符串

ECMAScript 6新增了使用模板字面量定义字符串的能力。与使用单引号或双引号不同,模板字面量保留换行字符,可以跨行定义字符串: let str1 早起的年轻人\n喜欢经常跳步;let str2 早起的年轻人喜欢经常跳步;console.log(str1);// 早起的年轻人…

【游戏逆向】游戏玩家技能冷却分析

技能冷却对于不同的游戏有不同的存放方式,而技能冷却的遍历也大多不会和技能的普通属性放在一起,在《在**明月刀》这款游戏中,技能的冷却判断格外重要,因为技能的连贯性对打怪的效率影响很大。 我们需要找一个冷却相对较长的技能用来进行扫描和过滤,一般选择几十秒即可,…

【本周特惠课程】基于GAN的图像增强理论与实践(涵盖图像降噪、色调映射、去模糊、超分辨、修复等方向)...

前言欢迎大家关注有三AI的视频课程系列,我们的视频课程系列共分为5层境界,内容和学习路线图如下:第1层:掌握学习算法必要的预备知识,包括Python编程,深度学习基础,数据使用,框架使用…

Windows扫描工具RunScanner使用实验(21)

实验目的 掌握利用Runscanner扫描和分析电脑;预备知识 RunScanner是一个完全免费的Windows系统工具,您可以用它轻松地将隐藏在您系统中的autostart程序,spyware,adware,主页劫持,未经认证的驱动揪出来,并可以导入和导出报告以帮助别人或获取帮助.目前它可以…

华为OD机试题,用 Java 解【素数之积】问题

华为Od必看系列 华为OD机试 全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典使用说明 参加华为od机试,一定要注意不…

C++中的利器——模板

前文本文主要是讲解一下C中的利器——模板,相信铁子们在学完这一节后,写代码会更加的得心应手,更加的顺畅。一,泛型编程想要学习模板,我们要先了解为什么需要模板,我们可以看看下面这个程序。int add(int&a…

MDK Keil5 创建Stm32工程-理论篇(这里以Stm32F103Zet6为例)

一、文件夹创建与文件说明整个工程可以粗略的划分为几个文件夹:BSP底层驱动比如GPIO\Timer等驱动文件CMSIS内核相关的文件Firmware生成的固件下载文件Mycode用户编写的相关文件,主要编写的文件都在这个文件夹里Project工程文件startup芯片启动文件STM32F…

1.C#与.NET简介

目录 一、C#语言及其特点 二、C#与.NET Framework/.NET Core关系 三、C#应用开发 四、案例展示 五、学习环境 一、C#语言及其特点 C#是美国微软公司发布的一种面向对象的,运行于 .NET Framework 和 .NET Core (完全开源,跨平台&#xff…

什么是LSM-Tree

前言 十多年前,谷歌发布了大名鼎鼎的"三驾马车"的论文,分别是GFS(2003年),MapReduce(2004年),BigTable(2006年),为开源界在大数据领域带来了无数的灵感&#…

unity的安装配置和第一个游戏-unity开学第一课

许多的小伙伴学编程语言其实是因为玩游戏,玩着玩着就想写游戏了,于是开始学习c学习C#学习java,但相比之下C#的操作会更加容易,所以就开始学习unity来编游戏了。这里就就算是unity开学第一课啦-unity的安装配置和第一个游戏。 文章…

Maven项目的创建

目录 1.创建java项目 1.1 新建项目​编辑 2 创建web项目 2.1 新建项目 2.2 启动项目 2.2.1 修改jdk的版本 2.2.2 设置单元测试的版本 2.2.3 删除pluginManagement标签 2.2.4添加web部署插件 2.2.5 启动项目 1.创建java项目 1.1 新建项目 创建resources目录 利用maven…

类模板函数模板从属类型

准备看个项目找实习&#xff0c;边看边学&#xff0c;一看到处都是template 和typename&#xff0c;好几年前学的C都忘记光了&#xff0c;在这里先做个笔记复习一下。template <class T> T abs(T x) {if(x < 0) return -x;return x; } int main() {int x 1;cout <…

PyQt5可视化 7 饼图和柱状图实操案例 ①Qt项目的创建

目录 一、新建Qt项目 二、添加组件和布局 三、添加资源 1. 新建资源文件 2. 添加图标资源 四、frameHead 1. toolBtnGenData 2. toolBtnCounting 3. comboTheme 4. comboAnimation 5. Horizontal Spacer 6. toolBtnQuit 7. 设置toolBtnQuit的功能 8. frameHead的…