美文网首页
Git命令-git暂存区

Git命令-git暂存区

作者: BlueSocks | 来源:发表于2023-07-17 11:24 被阅读0次

1. 暂存区概念

  • 工作区(Working Directory)

通俗点来说,进行代码编写的文件都属于工作区。比如新建个项目,根目录为learngitlearngit文件夹就是一个工作区,然后我们会在learngit项目创建文件、编写代码,这些操作都是在工作区进行的。

  • 暂存区(Repository)

在工作区修改文件后,通过git add命令,可以将修改添加到暂存区;但是执行git commit命令后,会将暂存区清空。

  • 版本库(Repository)

learngit目录下,通过git init创建git本地仓库后,会多出一个隐藏目录.git.git就是git的版本库。

Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD

我们把文件往Git版本库里添加的时候,是分两步执行的:

  1. git add把文件添加进去,实际上就是把文件修改添加到暂存区;
  2. git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

2. Git添加修改到版本库

  1. 创建git本地仓库
//在合适的目录下创建learngit目录,在learngit目录下创建git仓库
$ git init
//创建文件
$ touch test.txt
//编辑test.txt文件,添加内容“Hello World”
$ vim test.txt

  1. 将文件添加到暂存区
git add test.txt

  1. 将修改提交到版本库
git commit -m "First commit"

3. 撤销工作区修改

对于test.txt,经过不断的修改提交,已经有了一个稳定的版本,无需再进行修改。但是你不小心作了一点改动,在git add之前,你发现了这个改动:

$ git status
//Changes not staged for commit:
//  (use "git add <file>..." to update what will be committed)
//  (use "git restore <file>..." to discard changes in working directory)
//        modified:   test.txt

此时,可以使用git diff命令查看文件的修改:

//HEAD表示版本库的当前版本
$ git diff HEAD test.txt
//输出日志
//diff --git a/test.txt b/test.txt
//index e69de29..e965047 100644
//--- a/test.txt
//+++ b/test.txt
//@@ -0,0 +1 @@
//+Hello

git告诉我们,在test.txt文件中增加了“Hello”,而我们是不需要这个改动的。幸好这时候还没有执行git add命令,那么使用git checkout --命令撤销修改就可以了:

$ git checkout -- test.txt

4. 撤销暂存区的修改

假设,对test.txt文件修改后,并且执行git add命令添加到了暂存区,这时候撤回修改:

//1.先执行 git reset HEAD filename,撤销暂存区的修改
$ git reset HEAD filename
//2.撤销工作区修改
$ git checkout --filename

5. 撤销commit

假设修改了test.txt文件,并且执行git addgit commit命令,将修改提交到了版本库,这时候想回到上个版本,可以使用git reset --hard命令:

$ git reset --hard HEAD^

在Git中,用HEAD表示当前版本,也就是最新的提交,上一个版本就是HEAD^,上上一个版本就是

HEAD^^ 。当然也可以不使用HEAD,而是使用git的哈希值:

//查看提交记录
$ git log
//输出日志如下
commit 090650d054954b9bc48132e6b095f76791efc6c9 (HEAD -> main)
Author: aaa <aaa@aaa.com>
Date:   Fri Jun 23 20:42:27 2022 +0800
    修改test.txt
commit 168563df7667d6617e1cbe73a3201e4a5b9bf698
Author: aaa <aaa@aaa.com.cn>
Date:   Fri Jun 22 20:04:15 2022 +0800
    First commit
//这时候就可以使用git哈希值回到任一版本
$ git reset --hard 090650d054954b9bc48132e6b095f76791efc6c9

对于git reset命令,有3种参数可选 --soft、--mixed、--hard:

  • soft,

仅仅移动版本库HEAD指针,其他什么事都不做,即暂存区、工作区不会重置

  • mixed

reset默认的,移动版本库HEAD指针,重置暂存区,但不重置工作区。就比如说你从当前版本回退到历史版本,你工作区更改的文件和代码都是不会变成历史版本的。

  • hard

移动版本库HEAD指针,重置暂存区和工作区。 彻底回退到某个版本,本地的代码也会变为某个版本的内容,此命令慎用! 如果真要使用,建议先commit提交一份到本地库里,后悔再git reset回去

6. 总结

  • 什么是暂存区?

项目目录可以看作是一个工作区,对项目中所有文件的修改都是在工作区进行;执行git add命令后,会将修改的文件放到暂存区;执行git commit命令后,会将修改的文件更新到版本库,同时清空暂存区内容。

  • 不小心改乱了工作区内容,如何撤销?
$ git checkout -- filename

  • 不小心改乱了工作区内容,并且执行git add命令添加到了暂存区,如何撤销?
//1.先执行 git reset HEAD filename,撤销暂存区的修改
$ git reset HEAD filename
//2.撤销工作区修改
$ git checkout --filename

  • 已经提交了不合适的修改到版本库时,如何撤销?
$ git reset --hard commit_id

相关文章

  • Git 命令速查表

    Git 命令速查表 1、常用的Git命令 命令简要说明 git add添加至暂存区 git add-interac...

  • git的命令,注意事项,冲突解决的一点经验

    git的常用命令git add 将代码存入暂存区保存git add -A 将所有的代码都放入暂存区保存git co...

  • git的命令

    常用命令 git init git add //添加到git(暂存区)准备提交 git add -A git ad...

  • Git常用命令记录

    常用命令 功能命令添加文件/更改到暂存区git add filename添加所有文件/更改到暂存区git add ...

  • GIT命令

    git命令 常用 git init 初始化一个git仓库git add 添加文件到暂存区git co...

  • git及git常用命令

    了解Git: 下载git 版本库,暂存区与工作区: 版本库: 工作区: 暂存区: Git常用命令 将本地的某个文件...

  • git 的使用

    一 .git 的常用命令git init——>初始化仓库git add——>添加文件到暂存区git commit—...

  • git常用命令

    1、常用的Git命令 git add 添加至暂存区git add-interactive 交互式添加git app...

  • web前端代码版本控制工具

    git中有哪些常用的命令?初始化仓库:git init添加暂存区:git add 文件名 git add ....

  • Git使用-基础篇总结

    3个概念 工作区 暂存区 仓库 git获取帮助 命令格式:git help ; 例如,通过 git ...

网友评论

      本文标题:Git命令-git暂存区

      本文链接:https://www.haomeiwen.com/subject/vqlgudtx.html