安装Git和git命令使用

news2024/12/22 19:01:59

文章目录

  • 安装Git
  • 创建版本库
  • 版本回退
  • 工作区和暂存区
  • 管理修改
  • 撤销修改

安装Git

在Windows上安装Git
在Windows上使用Git,可以从Git官网直接下载安装程序,然后按默认选项安装即可。
安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!
在这里插入图片描述
安装完成后,还需要最后一步设置,在命令行输入:

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

可以再输入$ git config user.name然后回车,如果设置成功了就会显示你刚刚设置的用户名,同理,可以用$ git config user.email来查看你设置的邮箱

创建版本库

版本库又名仓库,可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

首先,选择一个合适的地方,创建一个空目录:

$ mkdir learngit
$ cd learngit
$ pwd

在这里插入图片描述第二步,通过git init命令把这个目录变成Git可以管理的仓库:

$ git init

在这里插入图片描述
当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。(如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见)

把文件添加到版本库
windows注意
千万不要使用Windows自带的记事本编辑任何文本文件。原因是Microsoft开发记事本的团队使用了一个非常弱智的行为来保存UTF-8编码的文件,他们自作聪明地在每个文件开头添加了0xefbbbf(十六进制)的字符,你会遇到很多不可思议的问题,比如,网页第一行可能会显示一个“?”,明明正确的程序一编译就报语法错误,等等,都是由记事本的弱智行为带来的。

现在我们编写一个HelloWorld.txt文件,内容如下:Hello World
一定要放到learngit目录下(子目录也行),因为这是一个Git仓库,放到其他地方Git再厉害也找不到这个文件。

第一步,用命令git add告诉Git,把文件添加到仓库:

$ git add HelloWorld.txt

在这里插入图片描述

第二步,用命令git commit告诉Git,把文件提交到仓库:

$ git commit -m "this is a .txt file"

-m后面输入的是本次提交的说明
在这里插入图片描述
执行成功后,1 file changed:1个文件被改动(我们新添加的HelloWorld.txt文件);1 insertions:插入了1行内容(HelloWorld.txt有两行内容)。

为什么Git添加文件需要两步呢?
因为commit可以一次提交很多文件,所以你可以多次add不同的文件。

版本回退

修改HelloWorld.txt文件如下:
Hello World
Hello ZhangSan

然后尝试提交:

$ git add HelloWorld.txt
$ git commit -m "append ZhangSan"

在这里插入图片描述
用git log命令查看:

$ git log

在这里插入图片描述
如果嫌输出信息太多,看得眼花缭乱的,可以试试加上–pretty=oneline参数:

$ git log --pretty=oneline

在这里插入图片描述

现在我们准备把readme.txt回退到上一个版本
首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交。
上一个版本就是HEAD^
上上一个版本就是HEAD^^
当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。

现在,我们要把当前版本append zhangsan回退到上一个版本,就可以使用git reset命令:

$ git reset --hard HEAD^

在这里插入图片描述
使用cat查看内容

$ cat HelloWorld.txt

在这里插入图片描述
用git log再看看现在版本库的状态:

$ git log

在这里插入图片描述
最新的那个版本append ZhangSan已经看不到了。
想要回答最新的,只要上面的命令行窗口还没有被关掉,你就可以顺着往上找啊找啊,找到那个append ZhangSan的commit id是c674ddd,于是就可以指定回到未来的某个版本:
$ git reset --hard c674ddd
在这里插入图片描述
此外Git提供了一个命令git reflog用来记录你的每一次命令:

$ git reflog

在这里插入图片描述
可以看到commit id

Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,然后顺便把工作区的文件更新了。所以你让HEAD指向哪个版本号,你就把当前版本定位在哪。

工作区和暂存区

工作区(Working Directory)
就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工作区。
版本库(Repository)
工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
在这里插入图片描述
我们再练习一遍,先对HelloWorld.txt做个修改:
Hello World
Hello ZhangSan
chat GPT
然后,在工作区新增一个LICENSE文本文件。
先用git status查看一下状态:

$ git status

在这里插入图片描述
Git非常清楚地告诉我们,HelloWorld.txt被修改了,而LICENSE还从来没有被添加过,所以它的状态是Untracked。

现在,使用两次命令git add,把readme.txt和LICENSE都添加后,用git status再查看一下:

$ git status

在这里插入图片描述
git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支。

$ git commit -m "understand how stage works"

在这里插入图片描述
一旦提交后,如果你又没有对工作区做任何修改,那么工作区就是“干净”的:

$ git status

在这里插入图片描述

管理修改

为什么Git比其他版本控制系统设计得优秀?
因为Git跟踪并管理的是修改,而非文件。

第一步,对HelloWorld.txt做一个修改,比如加一行内容:
Hello World
Hello ZhangSan
chat GPT
Gpt is Generative Pre-Trained Transformer

然后,添加:

$ git add HelloWorld.txt
$ git status

再修改HelloWorld.txt:
Hello World
Hello ZhangSan
chat GPT
Gpt is Generative Pre-Trained Transformer,The AI big model is more like the human brain.

提交:

$ git commit -m "GPT Readme"

在这里插入图片描述

再看看状态:

$ git status

在这里插入图片描述
怎么第二次的修改没有被提交?
第一次修改 -> git add -> 第二次修改 -> git commit
当你用git add命令后,在工作区的第一次修改被放入暂存区,准备提交,但是,在工作区的第二次修改并没有放入暂存区,所以,git commit只负责把暂存区的修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。

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

$ git diff HEAD -- HelloWorld.txt 

在这里插入图片描述
注意:+后面是版本库缺少的。

撤销修改

git checkout – file可以丢弃工作区的修改:

$ git checkout -- HelloWorld.txt

在这里插入图片描述
git checkout – file命令中的–很重要,没有–,就变成了“切换到另一个分支”的命令。

如果已经git add到暂存区了,在commit之前,你发现了这个问题。用git status查看一下,修改只是添加到了暂存区,还没有提交:
在这里插入图片描述
用命令git reset HEAD 可以把暂存区的修改撤销掉(unstage),重新放回工作区:

$ git reset HEAD HelloWorld.txt

在这里插入图片描述
git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。
再用git status查看一下,现在暂存区是干净的,工作区有修改:
在这里插入图片描述

####### 删除文件
先添加一个新文件test.txt到Git并且提交:
在这里插入图片描述
如果你直接用rm命令删了:

$ rm test.txt

这个时候,Git知道你删除了文件,因此,工作区和版本库就不一致了,git status命令会立刻告诉你哪些文件被删除了:

$ git status

在这里插入图片描述

要确实从版本库中删除该文件,那就用命令git rm删掉,并且git commit:

$ git rm test.txt
$ git commit -m "remove test.txt"

现在,文件就从版本库中被删除了。在这里插入图片描述
小结:
git rm test.txt 相当于是删除工作目录中的test.txt文件,并把此次删除操作提交到了暂存区。
使用git checkout – test.txt相当于是让工作目录test.txt恢复到暂存区中test.txt的状态,但是工作目录中test.txt已经被删除,无法找到文件来再次删除所以报错,必须先使用git reset head test.txt在暂存区中将删除操作丢弃,然后在git checkout – test.txt就是直接将工作目录中test.txt恢复到版本库中的状态。

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

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

相关文章

三星正在开发HBM4,预计2025年推出

近年来,人工智能(AI)、高性能计算(HPC)和PC一直在推动高性能DRAM产品的研发,市场对HBM类DRAM的需求也在迅速增长,各大厂商也加大了这方面的投入。目前HBM市场主要由三星、SK海力士和美光三家存储…

海尔智家亮相广交会:用确定的用户思维,战胜不确定的市场

全球家电市场的不确定性越来越强。 尽管家电行业复苏趋势不改,但是新的问题已显现。据中国机电产品进出口商会数据,今年1-8月,中国白色家电出口额同比下降2%。同时,据媒体报道,在近日举办的中国进出口贸易交易会&…

【红日靶场】vulnstack5-完整渗透过程

系列文章目录 【红日靶场】vulnstack1-完整渗透过程 【红日靶场】vulnstack2-完整渗透过程 【红日靶场】vulnstack3-完整渗透过程 【红日靶场】vulnstack4-完整渗透过程 文章目录 系列文章目录描述虚拟机密码红队思路 一、环境初始化二、开始渗透外网打点上线cs权限提升域信息…

重置手机网络虽然麻烦,但效果杠杠的!如何重置安卓手机的网络

在这篇文章中,我们将探讨你可能需要在Android设备上重置网络设置的原因,并将提供如何重置的分步说明。无论你是遇到连接问题,还是只是想重新开始网络设置,本指南都将引导你完成重置过程。 重置网络设置的原因 在Android设备上重置…

电流监测芯片SGM8199A2应用电路设计

SGM8199是一系列具有电压输出功能的双向电流监测芯片,用于监测共模电压范围内分流电阻上的压降,而不受电源电压的影响。该器件具有-0.1V至26V的宽共模电压范围输入。低偏移使得在监测电流时允许分流器上的满量程最大压降为10mV。SGM8199系列提供三种固定…

高速DSP系统设计参考指南(五)印制电路板或PCB布局

(五)印制电路板或PCB布局 所有电路设计完成后,下一步是电路板布局。这是开发过程中非常关键的一步,因为滤波电路的有效性取决于元件相对于 DSP引脚的放置位置。此外,电路板布局对噪声、串扰和传输线效应有很大影响&…

杭州怎么开股票账户佣金手续费最低?找哪家证券公司?

杭州怎么开股票账户佣金手续费最低?找哪家证券公司? 股票开户是指一个人或实体在证券公司或证券交易所注册并开立证券账户,以便购买和出售股票。股票开户需要提供身份证明文件、联系方式、银行账号等信息,并接受有关监管机构的审…

400 The plain HTTP request was sent to HTTPS port

接口请求发生问题: 解决方法: Nginx HTTP服务器的报错 “400 Bad Request: The plain HTTP request was sent to HTTPS port”,本文将讲解如何解决这个问题。简单从报错的字面意思上来看,是因为HTTP请求被发送到HTTPS端口&#x…

2022年京东双11美妆护肤品类数据回顾

在美妆护肤市场中,回望去年双11,虽然期间品牌在市场中的销售表现有升有降,但根据京东官方发布的数据来看,不少美妆品牌仍在京东双11期间取得了亮眼成绩,其中,赫莲娜等952个品牌成交额同比增长超100%。 下面…

基于Django与深度学习的股票预测系统 计算机竞赛

文章目录 0 前言1 课题背景2 实现效果3 Django框架4 数据整理5 模型准备和训练6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于Django与深度学习的股票预测系统 ** 该项目较为新颖,适合作为竞赛课题方向&#xff…

食品添加剂:健康还是危险?——从肠道微生物角度分析

谷禾健康 就在前不久,世界卫生组织将阿斯巴甜列为可能致癌物,引发了人们不小的热议。阿斯巴甜作为人工甜味剂的一种,不提供任何卡路里,就可以提供蔗糖几百倍的甜度。 人工甜味剂几乎不提供热量,或只提供极少的热量&…

最新最全计算机专业毕业设计选题精华汇总-持续更新中

文章目录 0 前言1 计算机毕设选题推荐2 开题指导3 最后 0 前言 大家好!大四的同学们毕业设计即将开始了,你们做好准备了吗? 学长给大家精心整理了最新的计算机毕业设计选题,希望能为你们提供帮助。如果在选题过程中有任何疑问&a…

Spring篇---第六篇

系列文章目录 文章目录 系列文章目录一、Spring 框架中的单例 Bean 是线程安全的么?二、Spring 是怎么解决循环依赖的?三、说说事务的隔离级别一、Spring 框架中的单例 Bean 是线程安全的么? Spring 框架并没有对单例 Bean 进行任何多线程的封装处理。 关于单例 Bean 的线程…

【广州华锐互动】利用VR开展建筑塔吊安全操作学习的好处?

随着科技的不断发展,虚拟现实(VR)技术已经逐渐渗透到各个领域,为人们的生活带来了前所未有的便利。在工程教育领域,VR建筑塔吊安全操作学习作为一种新型的教学手段,正逐渐成为提高教学质量和培养高素质工程…

《深入理解java虚拟机 第三版》学习笔记二

第 4 章 虚拟机性能监控、故障处理工具 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class,main()函数所在的类)名称以及这些进程的本地虚拟机唯一…

36v转变5V5A车充降压芯片

需要一款将36V降压为5V 5A的车载充电器降压芯片。 根据你的需求,推荐使用AH1514芯片作为替代选项。AH1514芯片具有广泛的输入电压范围(7V至38V)和20A的峰值输出电流,适合车载电源应用。它采用SSOP10封装,具备外置MOS管…

新技术:WEB组态能页面嵌套、属性继承吗?

目前市面上的工业组态或数据大屏工具有不少,也有很多0代码、无代码、低代码、零代码、低代码概念。 有没有可以支持图纸嵌套、属性暴露的?或者说页面任意嵌套、属性多继承暴露到上层? 比如页面A有输入框,页面B有对话框&#xff…

AI猫咪穿搭也太萌了!用AI写出好故事的22条诀窍;吴恩达AI新课预告;2024年十大战略技术趋势 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🔥 可口可乐与好利来跨界联名,推出与AI共创的新品巧克力 继「酱香拿铁」后又有一款跨界合作让人眼前一亮——可口可乐与好利来…

macOS下matplotlib如何显示中文字体?

一般要显示中文会使用: plt.rcParams[font.sans-serif][SimHei] #用来正常显示中文标签 plt.rcParams[axes.unicode_minus]False #用来正常显示负号不过在macOS下通常会显示方块字: 解决方案: 把上面两句注释掉,更换为&#xf…

【C语言】指针错题(类型分析)

题目&#xff1a; #include <stdio.h> int main () {int*p NULL;int arr[10] {0}; return 0; } 选项&#xff1a; A、p arr ; B、 int (* ptr )[10]& arr ; C、 p & arr [ 0 ]; D、 p & arr ; 解析&#xff1a; 1、 p 是一个指针变量&#xff0c;指…