你可以不用Git,但不能不会Git(二)基础(上)

news2024/9/25 0:41:59

目录

一.环境配置

二.本地初始化仓库

三.文件的两种状态

四.文件加入暂存区

五.文件提交与删除

1.提交文件

2.删除文件


一.环境配置

当安装Git后首先要做的事情是设置用户名称和email地址。这是非 常重要的,因为每次Git提交都会使用该用户信息。

设置用户信息

右键--》Git Bash Here,然后输入以下命令

 

查看配置信息

检查当前的设置

注意:

通过上面的命令设置的信息会保存在~/.gitconfig文件中。

二.本地初始化仓库

如果是全新的开始 如果这是你第一次使用Git,那么就先从创建一个全新的目录开始吧。打开终端机窗口,并试着操作以下命令(命令后面的#是说明, 不需要输入):

咱们在一个路径下创建一个测试文件夹,比如起名为git_test(手动创建也行,不用非得用mkdir),然后将Git Bash的命令行路径切换到git_test下,右键git_test文件夹再点Git Bash也一样。

mkdir git_test    #创建tmp目录
git init     #初始化这个目录让Git对这个目录开始进行版本控制。

小提示:

git init 命令会在上述目录中创建一个名为 .git 的隐藏目录,并在其中创建一个版本库。该目录为文件,查看->显示隐藏目录。整 个Git的精华都集中在这个目录中了,现在不先讲细节,只是体 会一下使用Git的感觉,后续在详细介绍。

三.文件的两种状态

版本控制就是对文件的版本控制,要对文件进行修改、提交等操 作,首先要知道文件当前在什么状态,不然可能会提交了现在还不 想提交的文件,或者要提交的文件没提交上。

注意:

Git不关心文件两个版本之间的具体差别,而是关心文件的整体 是否有改变,若文件被改变,在添加提交时就生成文件新版本的快照,而判断文件整体是否改变的方法就是用SHA-1算法计算文件的校验和。

untracked未跟踪

未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged(即添加到暂存区).

tracked已跟踪

被纳入版本控制

  • Unmodified

    文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为 Modified,如果使用git rm移出版本库, 则成为Untracked文 件。
  • Modified

    文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有 两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过,返回unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改。
  • Staged

    暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存,文件状态为Modified。

注意:

这些文件的状态会随着我们执行Git的命令发生变化 

注意:  

  • 新建文件--->Untracked
  • 使用add命令将新建的文件加入到暂存区--->Staged
  • 使用commit命令将暂存区的文件提交到本地仓库--->Unmodified
  • 如果对Unmodified状态的文件进行修改---> modified
  • 如果对Unmodified状态的文件进行remove操作--->Untracked

查看文件状态命令

语法结构:

git status

参数:

-s: 简洁输出 

例子

在git_test下创建一个index.html

显示index.html是untracked未跟踪状态。

然后使用git add添加到暂存区(什么都不显示就是Unmodified状态)

然后修改index.html的内容,再查看状态已变为modified 

再变回未修改状态(此时还未commit,所以也是暂存状态):

四.文件加入暂存区

文件加入暂存区命令

语法结构

git add 文件名

文件取消暂存区命令

语法结构

git reset 文件名

A代表暂存状态,如果是AM,则是之前是暂存状态,现在是修改状态,如果是??表明是未跟踪状态。

如果想commit到仓库,则要先确保文件是暂存状态,比如如果现在是修改状态,那么现在需要执行git add将文件转变为暂存状态。

下面的这条命令可以把当前目录下的所有未跟踪文件和修改文件都变为暂存状态。

git add .

五.文件提交与删除

1.提交文件

如果仅是通过git add命令把移动加到暂存区,还不算是完成整个流 程。如果想让暂存区的内容永久保存下来,就要使用git commit命令。

文件提交命令

语法结构:

会把本目录下所有为暂存状态的文件都提交到本地仓库。

git commit -m "提交信息"

参数:

  • -m : 本次提交做了什么事,只要简单、清楚的文本说明即可,中英文都可以重点是说清楚, 能让自己和别人很快明白就行。

如果不加m参数,会进入类似vim编辑。

修改commit记录

身为程序员,难免会遇到一些不太顺心的客户或项目。心情不好的时候,在代码或Commit信息中“发泄”一下情绪也是很常见的,只是 这要是让客户看见了总是不好解释。

要改动Commit记录有几种方式:

  1. 把.git目录整个删除(不建议)
  2. 使用git rebase命令来改动历史记录
  3. 先把 Commit用git reset命令删除,整理后再重新Commit
  4. 使用--amend参数改动最后一次的Commit

使用--amend参数进行Commit 

查看最近的commit记录 

git log --oneline

只需要在Commit命令后面加上--amend即可

git commit --amend -m "welcome to facebook"

2.删除文件

语法结构:

git rm 文件名

注意:

删除的文件只是删除工作目录的文件,我们的版本库里面还是存在的。 删除文件会把这个文件直接放入暂存区。(工作目录,暂存区,版本库之间的关系看看前面的图示)

即用上面的那个命令删除文件时是把文件从工作目录和暂存区全都删除了的,而如果手动删除的话(即我们右键文件选择删除)只会删除工作目录的文件,而不会删除暂存区的文件。 

挽救已被删除的文件或目录

“人有失手,马有失蹄”,人总会有不小心或状态不好的时候。不管是有意还是无心

在Git中如果不小心把文件或目录删除了,是可以挽救回来的,这也是使用版本控制系统最主要的原因之一。

这里先使用rm命令,故意把项目中所有的HTML文档删除:

rm *.html
ls -al

可以看出当前1个文件都处于被删除(deleted)状态。 可以使用git checkout命令:

 git checkout index.html

注意:

当使用git checkout命令时,Git 会切换到指定的分支,但如果后面接的是文件名或路径,Git则不会切换分支,而是把文件从.git目录中复制一份到当前的工作目录。更精准地说,这个命 令会把暂存区中的内容或文件拿来覆盖工作目录中。

如果想把所有删除文件都挽救回来,可以使用以下命令:

git checkout .

小技巧:

这个技巧不仅可以将删除的文件挽救回来,当改动某个文件后反悔了,也可以用它把文件恢复到上一次Commit的状态。不是所有情况下都能恢复被删除的文件的。因为整个Git的记录都是放在根目录下的 .git目录中,如果这个目录被删除了,也就意味着历史记录也被删除了,那么删除的文件也就不能恢复了。

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

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

相关文章

#G. 红旗招展

Description小J占山为王有一段时间了,他决定把自己的地盘打扮一下---将各种颜色的旗插在山头上当然某一座的山头只能用一种颜色的旗。整个地盘有N个山头,可看成是一棵有N个节点的树。小J还是有一点艺术细胞的,他不想整个地盘杂乱无章。于是他…

Kubernetes安装ingress-controller

IngressController 1. 安装 1.1 查看ingress-nginx的版本匹配 https://github.com/kubernetes/ingress-nginx/blob/main/README.md#readme 下载配置 wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.2/deploy/static/provider/cloud/de…

【回答问题】ChatGPT上线了!给我推荐20个比较流行的图像实例分割模型

给我推荐20个比较流行的图像实例分割模型 U-Net Mask R-CNN FCN SegNet PSPNet DeepLabv3 DenseASPP LinkNet RefineNet ENet ICNet BiSeNet CRF-RNN GCN Tiramisu FRRN DeepLabv3 PANet MaskLab Hybrid Task Cascade给我推荐20个比较流行的图像实例分割模型源码 好的&#x…

java学习之类变量

目录 一、类变量的引出 需解决的问题 传统代码 代码问题 解决方法 运行结果 二、类变量的内存布局 特点 内存中的位置 三、类变量定义 四、类变量语法 五、访问类变量 六、类变量细节 第一条 第二条 第三条 第四条 第五条 第六条 第七条 一、类变量的引出 需…

PHP8---MySQL扩展

目录 一、MySQL扩展的介绍 二、PHP和MySQL连接的基本操作 (1)MySQL连接的准备工作 (2)插入删除操作 三、查询操作 (1)mysqli_fetch_assoc (2)mysqli_fetch_row (3…

19. 网站响应数据加一个简单的密,就能挡住80%的爬虫,你信吗?

本篇博客我们实现响应加密,由于本案例是JS逆向阶段的第一个案例,所以采用最基础加密手段。 爬虫训练场源码同步仓库为 GitCode 项目采集测试地址:爬虫训练场 爬虫训练场框架搭建Python Flask 端 Base64加密前台解密字符串渲染数据框架搭建 本…

Es之mapping

1)、字段类型 2)、映射 Mapping(映射) Mapping 是用来定义一个文档(document),以及它所包含的属性(field)是如何存储和 索引的。比如,使用 mapping 来定义…

深入解析Linux虚拟化KVM-Qemu分析之KVM源码

说明: KVM版本:5.9.1QEMU版本:5.0.0工具:Source Insight 3.5, Visio 1. 概述 从本文开始将开始source code的系列分析了;KVM作为内核模块,可以认为是一个中间层,向上对接用户的控制…

idea中热部署插件JRebel的激活方式

idea中热部署插件JRebel的激活方式 一、打开jrebel 激活面板,如图: 二、选中Team URL(connect to online licensing service) 1、在上面的框中输入激活的url地址 http://127.0.0.1:8888/132d042c-3b1a-4c45-9044-b7897c3de7882…

遗传算法改进(IGA)+python代码实现

遗传算法改进(IGA)python代码实现一、变异概率的改进(1)单点变异(2)多点变异(3)选择性的突变概率二、交叉概率的改进三、适应度函数的改进(1)sigmoid函数&…

PGL 系列(六)node2vec

node2vec DeepWalk存在的问题是比较简单直接,而图结构往往是一个复杂结构,需要考虑很多因素,在深度优先搜索方法之外,还有广度优先搜索,结合以上两种方式可以更好的探索图模型,即node2vec。

华为交换机配置

文章目录网络规划与设计机房连线图PON网络配置网络规划与设计 OLT: 网络光线路终端(Optical Line Terminal) ONU分为两种 MDU(Multi-DwellingUnit,多住户单元) MDU主要应用于FTTB应用类型下的多个住宅用户的接入,一般具有至少4个…

【JDK工具】jinfo、jps、jstack、jstat、jmap

目录一、前言二、关键工具2.1 jps 显示所有JAVA进程信息1. 参数信息2. 常用命令2.2 jinfo 查看虚拟机配置参数信息1. 查看虚拟机参数 jinfo -flags pid2. 查看虚拟机指定参数 jinfo -flag 具体参数 pid3. 查看环境变量 jinfo -sysprops pid4. 参数列表2.3 jstack1. 能排查哪些问…

springboot整合之Validated参数校验

特别说明:本次项目整合基于idea进行的,如果使用Eclipse可能操作会略有不同,不过总的来说不影响。 springboot整合之如何选择版本及项目搭建 springboot整合之版本号统一管理 springboot整合mybatis-plusdurid数据库连接池 springboot整…

JVM面试大总结

一、汇总 JVM是运行在操作系统之上的,它与硬件没有直接的交互。先说一下JVM的内存区域,当函数开始运行时,JVM拿到自己的内存将自己的内存区域进行了分割,分为五块区域:线程共享的有堆、方法区,线程私有的有…

Hadoop MapReduce 介绍

Hadoop MapReduceMapReduce核心思想设计构思什么是MapReduceMapReduce的特点MapReduce的不足(局限性)MapReduce组成Hadoop MapReduce实现流程map阶段执行过程Reduce阶段执行过程Shuffle机制Map端ShuffleReducer端的shuffleMapReduce核心思想 MapReduce的…

基于MVC的在线购物系统

摘 要本毕业设计的内容是设计并且实现一个基于net语言的在线购物系统。它是在Windows下,以SQL Server为数据库开发平台,Tomcat网络信息服务作为应用服务器。在线购物系统的功能已基本实现,主要包括首页、个人中心、会员用户管理、商品分类管理…

Mac操作系统配置Git

下载Git mac在安装git时,一般只需要一行指令brew install git 验证Git 在我们安装过Git之后,我们可以输入git --version进行验证。如果我们成功进行了安装之后,我们可以看到下图这样的结果。 配置Gitee 生成密钥对 首先我们通过cd ~/.…

Allegro174版本新功能介绍之Symphony模式下放置器件

Allegro174版本新功能介绍之Symphony模式下放置器件 Allegro在172版本在Symphony模式下,是无法放置器件的,如下图 只有一个Swap的选项 在升级到了174版本的时候,Symphony模式是同样支持放器件的 具体介绍如下 任意打开一个174版本的PCB,选择Start Symphony Server

反射方程的分解、预计算BRDF

反射方程 仔细研究反射方程可以发现BRDF的漫反射kd和镜面反射ks是相互独立的,所以可以将方程分解为两部分: 通过分别积分两部分再求即可得到最终的反射结果。 漫反射部分 仔细观察漫反射积分,我们发现漫反射兰伯特项是一个常数项(…