Git介绍和基础命令解析

Git基本操作指令

工作区和暂存区

Git管理的文件分为:工作区(本地的文件夹),版本库(.git文件夹),版本库又分为暂存区stage和暂存区分支master(仓库)

工作区>>>>暂存区>>>>仓库

git add把文件从工作区>>>>暂存区,git commit把文件从暂存区>>>>仓库

git diff查看工作区和暂存区差异

git diff --cached查看暂存区和仓库差异

git diff HEAD 查看工作区和仓库的差异

git add的反向命令git checkout,撤销工作区修改,即把暂存区最新版本转移到工作区

git commit的反向命令git reset HEAD,就是把仓库最新版本转移到暂存区

管理修改

Git跟踪并管理的是修改,而非文件

现在有一个文件a.txt

你修改了a.txt,并使用git add a.txt把它存进了暂存区

此时你又对a.txt进行了修改

然后使用git commit进行了提交

Git管理的是修改,当你用git add命令后,在工作区的第一次修改被放入暂存区,准备提交,但是,在工作区的第二次修改并没有放入暂存区,所以,git commit只负责把暂存区的修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。

提交后,用git diff HEAD -- a.txt命令可以查看工作区和版本库里面最新版本的区别:

撤销修改

丢弃工作区文件的修改

如果你在本地工作区修改了某个文件,但是你突然不想要这些修改了,你可以通过git checkout -- file命令来撤销修改,他会撤销你的所有修改

存在两种情况,首先假设你要撤销的是a.txt

  • 如果a.txt在你修改前已经从工作区被添加到暂存区了,此时你修改完了以后,要进行撤销,那就会被撤销回到暂存区的状态
  • 如果a.txt没有被添加到暂存区,那就会被回退到版本库的最新状态

总的来说,就是会回退到最近的一次git commitgit add时的状态

丢弃暂存区文件的修改

如果你改了a.txt文件的内容,并git add进暂存区了,此时你想把暂存区的修改撤销掉(unstage),可以用git reset HEAD <file>

git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。

$ git status
On branch master
Changes to be committed:(use "git reset HEAD <file>..." to unstage)modified:   a.txt$ git reset HEAD a.txt
Unstaged changes after reset:
M	a.txt$ git status
On branch master
Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git checkout -- <file>..." to discard changes in working directory)modified:   a.txt$ git checkout -- a.txt$ git status
On branch master
nothing to commit, working tree clean

相当于利用两次撤销,将a.txt的内容变成了最新一次commit进仓库的状态

丢弃版本库的修改

如果你不小心把不想修改的内容提交到了仓库,那你就只能使用版本回退了,回退到上一个版本

git log #可以显示从最近到最远的提交日志
git log --pretty=oneline #可以将每条简化为一行

commit id即版本号,用SHA哈希出来的一个值,用十六进制表示

Git中用HEAD表示当前版本,上一个版本是HEAD^,上上个版本是HEAD^^

所以如果想回退到上一个版本

git reset --hard HEAD^
#或者是
git reset --hard xxxxx#后面写版本号,取前几位就可以,git会自己找

此时,git log看到的版本也是会回到上一个版本所能看见的

现在的操作相当于“回到过去”,如果你想回到未来,但是你又忘了之前的版本号是多少,你可以用

$ git reflog
e475afc HEAD@{1}: reset: moving to HEAD^
1094adb (HEAD -> master) HEAD@{2}: commit: append GPL
e475afc HEAD@{3}: commit: add distributed
eaadf4e HEAD@{4}: commit (initial): wrote a readme file

进入git log或者git reflog后,按q可以退出

删除文件

rm命令仅仅是删除本地工作区的文件,相当于一次对文件的修改,如果想同步给版本库的文件,就想要git addgit commit

git rm命令等同于rm + git add,此时只想要git commit即可完成版本库的同步

git rm -f,删除工作区和暂存区文件,并且将这次删除放入暂存区,主要是解决文件被add进暂存区,但是没有commit到仓库,导致暂存区和仓库存在不同,此时直接使用git rm就无法执行,可以添加-f的参数,强制删除

git rm --cached , 删除暂存区文件,但保留工作区的文件,并且将这次删除放入暂存区,此时使用git status

$ git status
On branch master
Changes to be committed:(use "git reset HEAD <file>..." to unstage)deleted:    test.txtUntracked files:(use "git add <file>..." to include in what will be committed)test.txt

git commmit以后仓库内的就被删除了,但是本地工作区还是保存的,而且不会被追踪

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

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

相关文章

WiFi的CSMA/CA竞争窗口流程简述

1、若站点最初有数据要发送&#xff08;不是发送不成功再进行重传的那种&#xff09;&#xff0c;且检测到信道空闲&#xff0c;在等待DIFS后&#xff0c;就发送整个数据帧。 2、否则&#xff0c;站点执行退避算法。一旦检测到信道忙&#xff0c;就冻结退避计时器。只要信道空…

Less 安装教程

文章目录 前言LESS的系统要求安装LESS例子输出Less编译css工具后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;Sass和Less &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术需要掌握&#xff0c;正在不断努力填补技术短板…

error LNK2038: 检测到“RuntimeLibrary”的不匹配项 解决方法

问题&#xff1a; 我们在使用Visual Studio编程的时候偶尔会遇到以下三种报错&#xff1a; error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MD_DynamicRelease”不匹配值“MDd_DynamicDebug” &#xff08;引用的是release模式&#xff0c;但设置成debug模式了…

开源博客项目Blog .NET Core源码学习(7:FluentValidation使用浅析)

开源博客项目Blog .NET使用FluentValidation模块定义数据验证项&#xff0c;具体而言&#xff0c;是在App.Application项目中定义验证类&#xff0c;设置验证规则&#xff0c;同时在App.Framwork项目中基于FluentValidation.AspNetCore包设置ASP.NET验证管道自动验证。   App…

操作系统——进程管理

文章目录 进程和线程进程的概念进程和程序的区别PCB(进程控制块)程序是如何运行的进程的特征进程的状态和状态转换五态模型 进程控制进程状态装换为啥需要保证原子性如何实现原语的原子性&#xff1f; 进程控制相关原语进程创建进程终止进程的阻塞和唤醒进程的唤醒进程的切换 进…

1603. 整数集合划分(2016年408数据结构算法题)

一、题目 1603. 整数集合划分https://www.acwing.com/problem/content/description/1605/ 二、算法的基本设计思想 由题意知&#xff0c;将最小的 个元素放在 中&#xff0c;其余的元素放在 中&#xff0c;分组结果即可满足题目要求。仿照快速排序的思想&#xff0c;基于枢…

Vue 2.0源码分析-Virtual DOM

Virtual DOM 这个概念相信大部分人都不会陌生&#xff0c;它产生的前提是浏览器中的 DOM 是很“昂贵"的&#xff0c;为了更直观的感受&#xff0c;我们可以简单的把一个简单的 div 元素的属性都打印出来&#xff0c;如图所示&#xff1a; 可以看到&#xff0c;真正的 DOM …

地铁在线售票vue票务系统uniAPP+vue 微信小程序

功能介绍 管理员 &#xff08;1&#xff09;管理员登录功能 &#xff08;2&#xff09;查看和修改线路信息 &#xff08;3&#xff09;减少线路 &#xff08;4&#xff09;修改价格&#xff08;5站3元 5-10 5元 10-15站6元 往上8元&#xff09; &#xff08;5&#xff09;删除用…

吾爱破解置顶的“太极”,太好用了吧!

日常工作和娱乐&#xff0c;都需要用到不同类型的软件&#xff0c;哪怕软件体积不大&#xff0c;也必须安装&#xff0c;否则到用时找不到就非常麻烦了。 其实&#xff0c;很多软件不一定一样不剩地全部安装一遍&#xff0c;一方面原因是用的不多&#xff0c;另一方面多少有点…

VS快捷键使用技巧(超全)

VS快捷键使用技巧&#xff08;超全&#xff09; 蒸汽小毛 蒸汽小毛 1.注释&#xff1a;CTRLKC 2.取消注释&#xff1a;CTRLKU 3.设置断点调试&#xff1a;F9&#xff0c;断点行不执行 4.回到上一个光标位置&#xff1a;CTRL 5.前进到下一个光标位置&#xff1a;CTRLShift …

Android设计模式--外观模式

弈之为术&#xff0c;在人自悟 一&#xff0c;定义 外观模式要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。提供一个高层次的接口&#xff0c;使得子系统更易于使用。 外观模式在开发中的使用频率是非常高的&#xff0c;尤其是在第三方的SDK里面&#xff0…

Django之admin页面样式定制(Simpleui)

好久不见&#xff0c;各位it朋友们&#xff01; 本篇文章我将向各位介绍Django框架中admin后台页面样式定制的一个插件库&#xff0c;名为Simpleui。 一&#xff09;简介 SimpleUI是一款简单易用的用户界面&#xff08;UI&#xff09;库&#xff0c;旨在帮助开发人员快速构建…

CSRF 漏洞的理解

CSRF 漏洞的理解 1. 漏洞描述 CSRF 漏洞是一种web 应用安全漏洞&#xff0c;攻击者可以利用该漏洞伪造的身份执行未授权的操作。 2. 漏洞原理 CSRF 漏洞的原理是 攻击者通过诱使受害者访问恶意网站或点击恶意链接时&#xff0c;利用用户已经登陆的身份来发送一写恶意请求给目标…

清华提出 SoRA,参数量只有 LoRA 的 70%,表现更好!

现在有很多关于大型语言模型&#xff08;LLM&#xff09;的研究&#xff0c;都围绕着如何高效微调展开。微调是利用模型在大规模通用数据上学到的知识&#xff0c;通过有针对性的小规模下游任务数据&#xff0c;使模型更好地适应具体任务的训练方法。 在先前的工作中&#xff…

基于驾驶训练算法优化概率神经网络PNN的分类预测 - 附代码

基于驾驶训练算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于驾驶训练算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于驾驶训练优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…

【面经八股】搜广推方向:常见面试题(五)

【面经&八股】搜广推方向:常见面试题(五) 文章目录 【面经&八股】搜广推方向:常见面试题(五)1. 推荐系统召回阶段如何实现热门 item 的打压?(推荐中的“哈利波特”效应)2. 关于推荐系统的召回模型3. user/item冷启动怎么解决4. Tensorflow与PyTorch的区别5. 调…

Robots 元标签与 X-Robots 标签

Robots Meta Tag 和 X-Robots-Tag 是两个常用的 HTML 标签&#xff0c;它们对观察机动爬虫和其他网络机器人很有启发性。这些标签可以控制您的网页如何被记录和显示。 什么是机器人元标记&#xff1f; 机器人元标记是一个 HTML 标签&#xff0c;它提供信息来查看电机爬虫和其…

Figma 插件学习(二)- 常用属性和方法

一. 如何调试figma插件 Plugins > Development > Show/Hide console 打开控制台即可开始调试 二.节点类型 根据不同的节点类型&#xff0c;也是会有不同的方法和属性&#xff0c;介绍几个常用节点类型 1.FrameNode 框架节点是用于定义布局层次结构的容器。它类似于HTM…

CUDA initialization failure with error: 999

ubuntu20.04&#xff0c;安装tensorRT, 执行example里面的./sample_char_rnn程序&#xff0c;测试时候报了如标题的一个错误&#xff0c;居然如下两行代码这样解决了&#xff0c;这两行命令好像是重新加载nvidia内核模块&#xff0c;有点玄学&#xff1a; sudo rmmod nvidia_u…

GWAS:plink进行meta分析

之前教程提到过Metal是可以做Meta分析&#xff0c;除了Metal&#xff0c;PLINK也可以进行Meta分析。 命令如下所示&#xff1a; plink --meta-analysis gwas1.plink gwas2.plink gwas3.plink logscale qt --meta-analysis-snp-field SNP --meta-analysis-chr-field CHR --me…