Git的安装及基础命令

news/2025/3/22 18:55:19/

一. 安装Git

  1. 首先请前往Git官网去下载最新的安装包:https://git-scm.com/download/win
    在这里插入图片描述

  2. 运行下载好的 .exe 文件,一路next即可。 右击桌面出现以下两个就算是成功。
    在这里插入图片描述

  3. 安装完成后,需要设定用户名和邮箱来区分不同的用户。右击屏幕,选择“Git Bash Here”,输入以下命令。

    git config --global user.name "shan"
    git config --global user.email "shan@qq.com"
    

    在这里插入图片描述

  4. 查看配置信息

    git config --list
    

    在这里插入图片描述

二、 基础命令

  1. 创建本地仓库
    我们可以将任意一个文件夹作为一个本地仓库,输入:

    git init
    

    输入后,会自动生成一个.git目录,注意这个目录是一个隐藏目录,而当前目录就是我们的工作目录。
    在这里插入图片描述

    创建成功后,我们可以查看一下当前的一个状态,输入:

    git status
    

    如果已经成功配置为Git本地仓库,那么输入后可以看到:
    在这里插入图片描述
    这表示我们还没有向仓库中提交任何内容,也就是一个空的状态。

  2. 添加和提交

    我们创建一个文本文档 hello.txt,随便写入一点内容 “Hello World”,接着输入:

    git status
    

    我们会得到如下提示:
    在这里插入图片描述
    其中Untracked files是未追踪文件的意思,也就是说,如果一个文件处于未追踪状态,那么git不会记录它的变化,始终将其当做一个新创建的文件
    这里我们将其添加到暂存区,那么它会自动变为被追踪状态:

    git add hello.txt #也可以 add . 一次性添加目录下所有的
    

    再次查看当前状态:
    在这里插入图片描述
    现在文件名称的颜色变成了绿色,并且是处于Changes to be committed下面,因此,我们的hello.txt现在已经被添加到暂存区了。

    将其提交到Git本地仓库中,注意需要输入提交的描述以便后续查看,比如你这次提交修改了或是新增了哪些内容:

    git commit -m 'Initial Hello'
    

    在这里插入图片描述

    接着我们可以查看我们的提交记录:

    git log             #将详细信息显示,会按提交时间列出所有的更新,最近的更新排在最上面。
    git log --oneline   #将信息简化,一行显示
    git log --graph     #显示ASCII 图形表示的分支合并历史。
    

    我们还可以查看最近一次变更的详细内容:

    git show [也可以加上commit ID查看指定的提交记录]
    

    在这里插入图片描述

    再次查看当前状态,已经是清空状态了:
    在这里插入图片描述

    接着修改一下我们的文本文档,由于当前文件已经是被追踪状态,那么git会去跟踪它的变化,如果说文件发生了修改,那么我们再次查看状态会得到下面的结果:
    在这里插入图片描述
    也就是说现在此文件是处于已修改状态,我们如果修改好了,就可以提交我们的新版本到本地仓库中:

    git add hello.txt
    git commit -m 'Modify Hello'
    

    接着我们来查询一下提交记录,可以看到一共有两次提交记录。
    在这里插入图片描述

    我们可以创建一个.gitignore文件来确定一个文件忽略列表,如果忽略列表中的文件存在且不是被追踪状态,那么git不会对其进行任何检查:

    # 这样就会匹配所有以txt结尾的文件
    *.txt
    # 虽然上面排除了所有txt结尾的文件,但是这个不排除
    !666.txt
    # 也可以直接指定一个文件夹,文件夹下的所有文件将全部忽略
    test/
    # 目录中所有以txt结尾的文件,但不包括子目录
    xxx/*.txt
    # 目录中所有以txt结尾的文件,包括子目录
    xxx/**/*.txt
    
  3. 回滚

    当我们想要回退到过去的版本时,就可以执行回滚操作,执行后,可以将工作空间的内容恢复到指定提交的状态:

    git reset --hard e1fc3e5
    

    执行后,会直接重置为那个时候的状态。再次查看提交日志,我们发现之后的日志全部消失了。
    在这里插入图片描述

    要是现在我又想回去,我们可以通过查看

    git reflog
    

    在这里插入图片描述
    这样就能找到之前的commitID,再次重置即可。
    在这里插入图片描述

三、 分支

分支就像我们树上的一个树枝一样,它们可能一开始的时候是同一根树枝,但是长着长着就开始分道扬镳了,这就是分支。我们的代码也是这样,可能一开始写基础功能的时候使用的是单个分支,但是某一天我们希望基于这些基础的功能,把我们的项目做成两个不同方向的项目,比如一个方向做Web网站,另一个方向做游戏服务端。

因此,我们可以在一个主干上分出N个分支,分别对多个分支的代码进行维护。

  1. 创建分支

    以下命令来查看当前仓库中存在的分支:

    git branch
    

    默认情况下是有一个master分支的,并且我们使用的也是master分支,一般情况下master分支都是正式版本的更新,而其他分支一般是开发中才频繁更新的。
    基于当前分支创建一个新的分支:

    git branch test
    # 对应的删除分支是
    git branch -d yyds
    

    在这里插入图片描述

    修改一下文件,提交,再查看一下提交日志:

    git commit -a -m 'branch master commit'
    

    在这里插入图片描述
    通过添加-a来自动将未放入暂存区的已修改文件放入暂存区并执行提交操作。查看日志,我们发现现在我们的提交只生效于master分支,而新创建的分支并没有发生修改。

    将分支切换到另一个分支:

    git checkout test
    

    我们会发现,文件变成了此分支创建的时的状态,也就是说,在不同分支下我们的文件内容是相互隔离的。
    在这里插入图片描述
    现在再来提交一次变更,会发现它只生效在test分支上。我们可以看看当前的分支状态:

    git log --all --graph
    

    在这里插入图片描述

  2. 合并分支

    我们也可以将两个分支更新的内容最终合并到同一个分支上,我们先切换回主分支:

    git checkout master
    

    接着使用分支合并命令:

    git merge test
    

    会得到如下提示:
    在这里插入图片描述
    在合并过程中产生了冲突,因为两个分支都对hello.txt文件进行了修改,那么现在要合并在一起,到底保留谁的hello文件呢?

    我们可以查看一下是哪里发生了冲突:

    git diff
    

    在这里插入图片描述
    因此,现在我们将master分支的版本回退到修改hello.txt之前或是直接修改为最新版本的内容,这样就不会有冲突了,接着再执行一次合并操作,现在两个分支成功合并为同一个分支。
    在这里插入图片描述

  3. 变基分支

    除了直接合并分支以外,我们还可以进行变基操作,它跟合并不同,合并是分支回到主干的过程,而变基是直接修改分支开始的位置,比如我们希望将test变基到master上,那么test会将分支起点移动到master最后一次提交位置:

    git rebase master
    

    变基后,test分支相当于同步了此前master分支的全部提交。

优选

我们还可以选择其将他分支上的提交作用于当前分支上,这种操作称为cherrypick:

git cherry-pick <commit id>:单独合并一个提交

这里我们在master分支上创建一个新的文件new.txt,提交此次更新,接着通过cherry-pick的方式将此次更新作用于test分支上。
在这里插入图片描述


http://www.ppmy.cn/news/89364.html

相关文章

leetcode 31. 下一个排列

题目链接&#xff1a;leetcode 31 1.题目 整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如&#xff0c;arr [1,2,3] &#xff0c;以下这些都可以视作 arr 的排列&#xff1a;[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。 整数数组的 下一个排列 是指其整数的下…

创建多线程常用的三种方式

三种常用多线程实现方式 1. 继承Thread类 继承Thread线程类并且重写run方法无线程任务返回值 2. 实现Runnable接口 实现Runnable接口并且重写run方法无线程任务返回值 3. 实现Callable接口和通过Futrue接口实现类(FutrueTask) 实现Callable接口(泛型数据类型对应call方法的返回…

android 12.0 第三方输入法app设置系统默认输入法

1.概述 在12.0的产品开发中,有功能需要要求设置默认输入法,替换掉系统的输入法,所以这就需要了解设置输入法的相关功能需求,然后根据输入法包名来设置默认输入法 2.第三方输入法app设置系统默认输入法的核心代码 frameworks/base/packages/SettingsProvider/src/com/and…

openGauss Developer Day 2023 | 邀您参加南大通用分论坛

聚数成峰 共赢未来 面向数据库开发者的年度技术盛会 openGauss Developer Day 2023 将于5月25-26日在北京召开 GBASE南大通用将携创新数据库产品及行业解决方案亮相本届大会。 5月26日 &#xff0c;更设有南大通用 “多模多态分布式数据库助力数字化转型” 专场论坛&am…

TypeScript 中的 .d.ts 文件:加强类型支持,提升开发效率

1.引言 什么是 .d.ts 文件 当我们使用 TypeScript 开发时&#xff0c;类型声明是非常重要的。它们提供了代码的静态类型检查和智能提示&#xff0c;以增强代码的可读性、可维护性和可靠性。然而&#xff0c;对于已有的 JavaScript 库或自定义模块&#xff0c;它们可能不包含类…

数据结构学习分享之链式二叉树(一)

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:数据结构学习分享⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你了解更多数据结构的知识   &#x1f51d;&#x1f51d; 数据结构第八课 1. 前言2.…

vmware安装debian 11.7.0 配置LVM

vmware安装debian 11.7.0 配置LVM 1、下载镜像2、创建并安装debian 11虚拟机2.1、选择 Graphical install2.2、选择安装过程显示语言和系统语言2.3、选择地区2.4、键盘映射2.5、设置主机名-debian2.6、设置网络-直接跳过2.7、设置root密码2.8、创建普通账户2.9、为普通账户设置…

网络安全是一个好专业吗?

前言 网络安全作为一个专业领域&#xff0c;在当今数字时代正变得越发重要和关键。无论是企业还是个人&#xff0c;面对着越来越频繁的网络威胁和攻击&#xff0c;网络安全领域的专业人员扮演着至关重要的角色。那么&#xff0c;从一个资深网安工程师的角度来看&#xff0c;网…