当前位置: 首页 > news >正文

【git】git版本控制

目录

1.在合适的位置打开bush,创建仓库

2.检查:跳转到当前文件夹,显示当前文件夹的相对路径

3.初始化

4.创建一个文本文件readme.txt

5.手动向readme文件中添加一些内容

6.把文件添加到暂存区

7.把文件提交到git仓库

8.手动修改readme.txt文件

9.查看当前git中文件的状态

10.查看文件修改的不同

11.把文件添加到暂存区,并检查状态

12.把文件提交到仓库,并检查状态

13.查看记录(日志)

14.练习修改,添加,提交

15.查看当前版本内容

16.版本退回,并查看版本

17.查看每次命令

18.版本退回GPL版本,并查看版本内容

19文件追踪

20.查看工作区中的版本与仓库中的版本的不同

21.撤销修改

22.删除文件

24.配置github

25.把仓库与本地的仓库联系起来

26.向远程仓库中提交

27.”删除“远程仓库

28.克隆远程仓库

28.创建分支

29.在dev分支修改文件,并提交

30.合并分支

31.删除分支

32.新建分支dv,并提交到github

33.创建新分支,解决冲突

35.用不用快速合并的方式合并

36.Bug修复

36.查看远程仓库的信息

37.多人协作

38.标签

36.忽略某些文件

37.为操作配置别名


1.在合适的位置打开bush,创建仓库

mkdir(make directory创建目录)

2.检查:跳转到当前文件夹,显示当前文件夹的相对路径

cd(change directory改变目录)

pwd(print working directory打印当前工作目录)

3.初始化

git init(git initilatize git初始化)

已经初始化空的git仓库(repository)在D盘work_git/learngit/.git

表示你现在的文件夹为空,现在多了一个.git文件夹

4.创建一个文本文件readme.txt

 touch(触摸,当文件不存在时会创建该文件)

现在当前文件夹中创建了一个名为“readme”的txt类型的文件

(当然也可以手动创建)

5.手动向readme文件中添加一些内容

(windows环境下,建议所有的路径都不要有中文,文本编辑器推荐用vscode)

6.把文件添加到暂存区

git add(git添加)

git的文件有三个工作区:

工作目录(working directory),暂存区域(staging area),git仓库(.git directory或repository)

版本的更新过程是先由工作目录add到暂存区域,再由暂存区域commit到git仓库

7.把文件提交到git仓库

git commit  -m"备注“(git提交)

现在已经把这个版本提交到仓库了

[master分支]备注

1个文件改变,2行内容插入

创建readme.txt文件

(注意-m)

8.手动修改readme.txt文件

9.查看当前git中文件的状态

git status(状态)

在默认分支

改变还未被暂存以提交

    (用”git add <file>来更新什么会被提交)意思是用git add命令把文件添加到暂存区

      (用“git restore <file>来丢弃改变在工作目录)意思是用git restore命令来撤回这次改变

                  已修改:readme.txt

没有已经添加的改变以提交(用git add或者git commit -a)

意思是我们已经做了修改,但还没有把它添加到暂存区

在第6步,我们说到git有三种工作区

他们分别对应三种状态:modified(已修改的),staged(已暂存的),commited(已提交的)

10.查看文件修改的不同

git diff(git difference不同)

diff --git a/readme.txt  b/readme.txt 意思是变化的文件

index c65888e..f4cc7a4 100644 索引

--- a/reame.txt

+++ b/readme.txt

@@ -1,2 +1,2 @@

-git is a version control system 意思是这一行减去了

+git is a distributed version control system  意思是这一行新加的

git is free                     意思是这一行没变化

11.把文件添加到暂存区,并检查状态

git add

git status

改变将要被提交    意思是文件现在在暂存区

     (用”git restore --staged<file>来不存储)意思是让文件回到工作目录中

             已修改: readme.txt

12.把文件提交到仓库,并检查状态

git commit -m"add distributed"

git status

没有东西要被提交,工作树很干净

意思是现在三个工作区都没有任务,即所有的修改都已经提交到仓库中

13.查看记录(日志)

git log(记录/日志)

commit 3d4e…….63cd

 意思是commit id 的版本号,是一个很大的十六进制数,是一个哈希值,此次提交的索引

HEAD->master  意思是当前版本的指针

作者:名字<邮箱>

提交日期:星期五 十二月 24日 11:13:52 2021年 +0800

  add distirbuted (你自己写的备注)

log的顺序是从最近的到最远的

如果不想看作者,日期信息可以用下面的命令

git log --oneline(只显示一行)

git log --pretty=online(完美的=一行)意思是会显示完整的哈希值

14.练习修改,添加,提交

15.查看当前版本内容

cat <file>(固定)

16.版本退回,并查看版本

git reset --hard HEAD^(git 重置--hard 头指针的上一个^)

当前版本的头指针在3d43e7f备注

退回上上个版本可以git reset --hard HEAD^^

退回前100个版本可以git reset --hard HEAD~100

17.查看每次命令

git reflog(git referencelog查阅日志)

18.版本退回GPL版本,并查看版本内容

在当前git窗口未关闭的情况下,首先查找GPL版本的commit哈希值(前几位即可)9c07c

git reset --hard 9c07c

19文件追踪

创建一个license.txt(许可证)文件,并查看git状态、

未被追踪的文件:

(用“git add <file>"来包含进什么会被提交

                 LICENSE

没有东西被添加进以提交但是未被追踪的文件存在

意思是当一个文件首次被创立之后,是未被追踪的状态,要先添加到暂存区才能被追踪

20.查看工作区中的版本与仓库中的版本的不同

没有内容显示,就是没有差别

21.撤销修改

01,在未添加到暂存区的时候,手动修改文件,查看状态,

此时文件还没有被添加到暂存区,可以用git restore <file>丢弃修改,并查看版本内容

02,在添加到暂存区之后,手动修改文件并添加到暂存区,查看状态

用git restore --staged <file>来让文件回到没有添加到工作区的状态

并查看git状态,和版本内容

PS:这是2.3之后新版的撤销操作

原来版本对应的是命令是

git checkout --<file>

git reset HEAD <file>

 

22.删除文件

首先把创建的license.txt提交到仓库

手动删除或者用rm(remove 移除)

用“git add/rm<file>来更新什么被提交

用”git restore <file>来丢弃改变在工作目录中

01.误操作,丢弃删除这个操作

02.确定要删除,git   add/git rm  +git commit

23.查看ssh密钥

打开git bush 软件,首先检查自己是否有ssh密钥

cd ~/.ssh

没有这样的文件或目录

表示你的系统还没有ssh

创建ssh密钥

ssh-keygen -t rsa -C "邮箱“

(ssh安全协议keygenerate钥匙生成

然后一路回车

创建完成后,再次查看.ssh文件

cd ~/.ssh

ls(List directory contents,显示目录列表)

cat ~/.ssh/id_rsa.pub(查看公钥public)

24.配置github

首先注册一个GitHub账号,点击头像,点击settings,

点击ssh keys,点击new ssh key,

添加一个名称,复制粘贴刚才的公钥(上图一长串右键copy)

创建一个新的仓库repository,命名为learngit

25.把仓库与本地的仓库联系起来

按照GitHub的提示

(在learngit的目录下打开gitbush)

git remote add  origin git@github.com:gaode-8/learngit.git(远程添加仓库@网址)

git branch -M main

git push -u origin main(push推-u初始化时origin源头main主分支)

这是第一次使用git的clone或者bush时会得到的命令

输入yes回车

ps:

这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器

此时再看github,你会发现learngit仓库与我们本地的leargit仓库一样了

26.向远程仓库中提交

首先修改文件(在最后一行添加:git is good并添加到本地仓库)

此时github中并没有发生变化

接下来把本地仓库

git push origin mian(push推main主要的分支)

 

(中间发生一次错误

是因为github更新之后把master换成了main)

现在github已经变化

27.”删除“远程仓库

首先查看远程仓库的信息

git remote -v

fetch取 push推

git remote rm <name>

即可”删除“远程仓库(这里的删除并不是真正的删除,只是取消本地仓库和远程仓库的联系)

28.克隆远程仓库

首先我在我的github上新建了一个Cplusplus_learn仓库

git clone <地址>(clone克隆,复制)

注意这里的地址有好几种写法

1.http协议: https://github.com/xxx/xxx

2.ssh协议: @github.com:xxx/xxx

可以在github上的code找到,直接复制即可

然后我们发现我们自己的电脑上多了一个Cplusplus_learn文件夹

里面也和github上面的一摸一样

检查

28.创建分支

git checkout -b <name>(创建并跳转到分支dev)

(等于是 git branch dev

              git checkout dev

两步的合并)

查看分支

(标有*的是当前分支)

29.dev分支修改文件,并提交

30.合并分支

切换回main

我们发现readme中的修改不见了

合并dev分支到main

更新

快进模式

切换也可以使用 git switch dev

git switch  -c dev 创建并切换到dev

31.删除分支

git branch -d dev

32.新建分支dv,并提交到github

33.创建新分支,解决冲突

创建新分支,并修改

你的分支比远程/main分支超前了一个分支

在跳转到main,修改

我们尝试合并但是发生了冲突,合并失败

自动合并Readme.txt

冲突(内容):README.TXT合并冲突

自动合并失败;修复冲突,然后提交结果。

用git status 查看状态

您的分支领先于2个提交的来源/主人

(使用Git Push发布您的本地提交)

你有没有解除的路径。

(修复冲突并运行git提交

(使用git merge -abort中止合并)

未使用的路径:

(使用git添加<file> ...”标记分辨率)

修改后:Readme.txt

没有添加更改以提交(使用git添加/git commit -a

我们也可以直接查看readme.txt

手动修改AND,并选择接受

然后提交

删除feature1

可以用带参数的git log 查看合并情况

35.用不用快速合并的方式合并

好处是保留合并后的分支

36.Bug修复

修改readme.txt

用git stash(储存)现场,之后可以恢复

确定在哪个分支上修复bug,就在那个分支上创建分支

然后修改bug,提交分支,合并分支

然后会到main分支继续工作

检查刚才临时储存的

回复并删除储存

git stash pop(去)

(用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除)

如果想把修复这个bug分支的操作复制到其他分支上去可以用

git cherry-pick <commit>

<commit>是修复bug分支的commit操作id

36.查看远程仓库的信息

推送main分支

37.多人协作

38.标签

git tag <name>(标签)

git show <name>(查看标签内容)

也可以找到之前的操作id,补加tag

可以给标签添加信息

git tag -a <name> -m "备注“

删除本地标签

向远程推送标签

或者一次性推送全部标签

删除远程标签

36.忽略某些文件

创建 文件名为 .gitignore 的文件(注意没有后缀格式)

并提交

我们发现无法提交abc.txt了

37.为操作配置别名

git congig --global(意思是全局,这台电脑上的仓库都可以用) alias.<别名> 操作

相关文章:

【git】git版本控制

目录 1.在合适的位置打开bush,创建仓库 2.检查&#xff1a;跳转到当前文件夹&#xff0c;显示当前文件夹的相对路径 3.初始化 4.创建一个文本文件readme.txt 5.手动向readme文件中添加一些内容 6.把文件添加到暂存区 7.把文件提交到git仓库 8.手动修改readme.txt文件 9.查看当前…...

模电学习7. 三极管特性曲线与静态工作点

模电学习7. 三极管特性曲线与静态工作点一、三极管的伏安特性曲线1. 三极管的伏安特性曲线2. 三极管的静态工作点二、合适的静态工作点选择1. 合适静态工作点条件2. 静态工作点的确定三、使用立创EDA仿真查看静态工作点1. 搭建如下图所示测试电路2. 点击菜单仿真、仿真设置3. 运…...

LeetCode题解:633. 平方数之和,双指针,JavaScript,详细注释

原题链接&#xff1a; https://leetcode.cn/problems/sum-of-square-numbers/ 解题思路&#xff1a; a和b一定是000到c\sqrt cc​之间的某个值。将a的初始值设为0。b的初始值设为c\sqrt cc​&#xff0c;b必须为整数。a和b向中间逼近&#xff0c;查找满足条件的值。由于a和b是…...

Keil编译头文件iec_std_functions.h错误解决

Keil 编译IEC61131-3库&#xff0c;头文件&#xff0c;大量出现以下错误&#xff1b; cast to type &#xff1f; is not allowed compiling resource1.c... ..\PLC\rts\matiec\lib\C\iec_std_functions.h(192): error: #119: cast to type "TIME" is not allowed…...

2022 赣育杯 CTF --- Crypto Lost_N wp

文章目录前言题目解题过程解题代码前言 这是去年江西省赛一道有点小坑的密码题&#xff0c;当时没做出来&#xff0c;今天回想起来重新做一下并且记录一下。 题目 Lost_N.py import gmpy2 from Crypto.Util.number import * # part1 flag bSangFor{} d getPrime(435) cou…...

【趋势分析方法三】MATLAB代码实现TFPW-MK检验

目前水文时间序列趋势分析的方法很多&#xff0c;主要分为参数检验和非参数检验两大类&#xff1a; 参数检验中常用的有线性回归法、滑动平均法、累积距平法等非参数检验则主要包括Mann-Kendal&#xff08;MK&#xff09;法和 Spearman 秩次相关法等 虽然从理论上讲&#xff…...

一文学会 Spring 整合 MyBatis

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…...

ElasticSearch - 文档 | 索引文档 | 检索文档 | 创建索引并指明映射

文章目录1. ElasticSearch是面向文档的2. 索引员工文档3. 检索员工文档4. 映射1. ElasticSearch是面向文档的 在应用程序中对象很少只是一个简单的键和值的列表。通常&#xff0c;它们拥有更复杂的数据结构&#xff0c;可能包括日期、地理信息、其他对象或者数组等。 Elastic…...

SQL中的DML、DDL、DCL分别是什么意思

SQL命令的分类 数据定义语言 DDL&#xff08;DataDefinition Language&#xff09; 是 SQL 语言集中负责数据结构定义。 DDL 的核心指令是CREATE、ALTER、DROP。 操作的对象包括&#xff1a;库、表、视图、索引等。 如&#xff1a;CREATE TABLE ; ALTER INDEX; DROP VIEW; 数据…...

kubeasz部署k8s高可用集群

前言&#xff1a;如无特殊说明&#xff0c;所有操作都用root账号在所有节点执行。 说明&#xff1a;kubeasz是一款国产开源的k8s部署软件&#xff0c;采用ansible role的部署方式&#xff0c;部署k8s二进制集群。熟悉ansible role的用该软件部署k8s方便快捷。 一、机器 deplo…...

2022年工程机械出口专题研究【重工】

文章目录2022年工程机械出口专题研究1、中国是全球工程机械第一大市场&#xff0c;竞争力逐步提升2、工程机械出口高增&#xff0c;市场分布趋于多元&#xff0c;企业营收获益3、海外市场高速增长原因为何&#xff1f;4、海外市场增长动能预测附件&#xff1a;2022年工程机械出…...

[python入门(51)] - python时间日期格式time和datetime

目录 ❤ 预备知识 ❤ UTC time Coordinated Universal Time ❤ epoch time ❤ timestamp&#xff08;时间戳&#xff09; ❤ stamptime时间戳 ❤ struct_time时间元组 ❤ format time 格式化时间 ❤ time模块​编辑 ❤ 获取当前时间的方法 ❤ 当传入默认参…...

别担心ChatGPT距离替代程序猿还有距离

经过多天对chat-GPT在工作的使用&#xff0c;我得出一个结论&#xff0c;它睁眼瞎说就算了&#xff0c;它还积极认错&#xff0c;绝不改正&#xff0c;错误答案极具误导性&#xff0c;啥也不说了&#xff0c;请看图。 经过N次较量它固执的认为 0011 1101 0110 0101在最高位是左…...

SpringBoot项目打包部署到阿里云服务器、通过Maven插件制作Docker镜像、部署项目容器、配置生产环境

制作通用模块jar包 通用模块不是运行的&#xff0c;而且要被其他模块引入的&#xff0c;所以该模块不能采用springboot打包方式制作jar包&#xff0c;否则其他模块无法引入通用模块。 1、修改通用模块&#xff0c;设置模块为非Springboot项目 <?xml version"1.0&qu…...

OpenGov的首个方案已上线Moonriver

随着公投128的通过&#xff0c;作为Runtime 2100的一部分&#xff0c;Moonbeam在Moonriver上推出了OpenGov。Moonbeam上的OpenGov部署将从Moonriver开始&#xff0c;以获得社区反馈。未来将举行公投&#xff0c;让社区来决定OpenGov如何发展并转移至Moonbeam。 Moonriver上的O…...

(三十一)大白话MySQL如果事务执行到一半要回滚怎么办?再探undo log回滚日志原理

之前我们已经给大家深入讲解了在执行增删改操作时候的redo log的重做日志原理&#xff0c;其实说白了&#xff0c;就是你对buffer pool里的缓存页执行增删改操作的时候&#xff0c;必须要写对应的redo log记录下来你做了哪些修改 如下图所示&#xff1a; 这样万一要是你提交事…...

机器学习-基于KNN及其改进的汉字图像识别系统

一、简介和环境准备 knn一般指邻近算法。 邻近算法&#xff0c;或者说K最邻近&#xff08;KNN&#xff0c;K-NearestNeighbor&#xff09;分类算法是数据挖掘分类技术中最简单的方法之一。而lmknn是局部均值k最近邻分类算法。 本次实验环境需要用的是Google Colab和Google Dr…...

Zebec生态持续深度布局,ZBC通证月内翻倍或只是开始

“Zebec生态近日利好不断&#xff0c;除了推出了回购计划外&#xff0c; Nautilus Chain 、Zebec Labs等也即将面向市场&#xff0c;都将为ZBC通证深度赋能。而ZBC通证涨幅月内突破100%&#xff0c;或许只是开始。”近日&#xff0c;流支付生态Zebec生态通证ZBC迎来了大涨&…...

Leetcode.1238 循环码排列

题目链接 Leetcode.1238 循环码排列 Rating &#xff1a; 1775 题目描述 给你两个整数 n和 start。你的任务是返回任意 (0,1,2,,...,2^n-1)的排列 p&#xff0c;并且满足&#xff1a; p[0] startp[i]和 p[i1]的二进制表示形式只有一位不同p[0]和 p[2^n -1]的二进制表示形式也…...

spring boot的包扫描范围

目录标题一、误解二、正确的理解三、不同包也能扫描到Bean的方法一、误解 一开始我一直以为spring boot默认的包扫描范围是启动类的同级目录和子目录下的Bean。其实正真是与启动类在同个包以及子包下的Bean。 我一直误解了包的概念&#xff0c;包并不是只文件夹&#xff08;文…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...