美文网首页
git -- (实用)对工作区和暂存区的一些操作场景

git -- (实用)对工作区和暂存区的一些操作场景

作者: 我要进大厂 | 来源:发表于2020-02-01 22:43 被阅读0次

diff差异

工作区和暂存区 :  git diff 

工作区和HEAD  :  git diff  HEAD

暂存区和HEAD  :  git diff  --cached

不同分支的差异 :  git diff  dev1.0  master

不同commit的差异:git diff  sha1 sha2

指定文件: git diff sha1 sha2 -- test/ab.txt

说明:对于新增的文件,其只存在于工作区,且处于 Untracked 状态,Git 认为无论是哪两个 Git 区域之间的比对都没有意义,得到的结果是没有区别。使用git status查看;

撤销操作

本地仓库恢复暂存区内容 :
git reset HEAD -- 文件名   # 对某个文件进行恢复                    
git reset HEAD -- path    # 对某个路径进行恢复    
git reset HEAD            # 对所有文件进行恢复
(使用 git diff -cached 做比较)
 
暂存区恢复工作区内容 :  
git checkout -- 文件名     # 对某个文件进行恢复
git checkout -- path      # 对某个路径进行恢复 
git checkout              # 对所有文件进行恢复
(使用 git diff 做比较)

本地仓库恢复工作区和暂存区内容 :
git reset --hard HEAD
(使用 git diff HEAD 工作区和本地仓库做比较)
              
git reset HEAD 本地仓库对暂存区的恢复,加了--hard,对工作区也一起恢复。        

回到某个commit有两种方式:reset和revert(恢复)

git reset HEAD
git reset commit_id

git revert HEAD
git revert -n commit_id    -n 表示不立即commit,只是恢复工作区内容。

git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。

清除工作区变化

git reset --hard HEAD
git clean -df

清除暂存区变化

git rm -r --cached .
git rm -r --cached -- index.jsp

从工作目录中删除所有没有tracked过的文件和目录-d

git clean -df 

说明:git clean经常和git reset --hard一起结合使用. 记住reset只影响被track过的文件, 所以需要clean来删除没有track过的文件. 结合使用这两个命令能让你的工作目录完全回到一个指定的<commit>的状态
git clean的用法


下面转发文件转发自:https://www.cnblogs.com/soaeon/p/10908712.html

比较暂存区和HEAD所含文件的差异?

操作场景如下:

*   修改readme.md 文档
    *   vi readme.md
*   加入到暂存区域
     *   git add readme.md
*   使用git diff -cached 做比较

比较工作区和暂存区所含文件的差异?

操作场景如下:

*   修改readme.md 文档
    *   vi readme.md
*   加入到暂存区域
    *   git add readme.md
*   使用git diff 做比较

让暂存区恢复成和HEAD的一样?

git reset HEAD

暂存区覆盖工作区(将工作区的修改抹掉)

操作场景如下:

*   修改 re'adme.md
    *   vi readme.md
*   比较工作区和暂存区的问价差异
    *   git diff
*   将暂存区覆盖工作区
    *   git checkout -- readme.md
*   再次比较工作区和暂存区的差异
    *   git diff

取消暂存区部分文件的更改?

操作场景如下:

创建了两个文件, 同时加入到了暂存区域, 发现还需要修改

soaeon@DESKTOP-FUJJTHR MINGW64 /f/gitstudy (master)
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        new file:   index.css
        new file:   index.js

index.css已经加入到暂存区域了, 但是还需要修改, 我们先从暂存区域撤回吧

soaeon@DESKTOP-FUJJTHR MINGW64 /f/gitstudy (master)
$ git reset HEAD   index.css

执行git status 查看一下是否退回来了

soaeon@DESKTOP-FUJJTHR MINGW64 /f/gitstudy (master)
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        new file:   index.js

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        index.css

再比较一下工作区和暂存区的差别

soaeon@DESKTOP-FUJJTHR MINGW64 /f/gitstudy (master)
$ git diff --cached
diff --git a/index.js b/index.js
new file mode 100644
index 0000000..e69de29

相关文章

  • git -- (实用)对工作区和暂存区的一些操作场景

    diff差异 说明:对于新增的文件,其只存在于工作区,且处于 Untracked 状态,Git 认为无论是哪两个 ...

  • git 常用命令

    在介绍Git“反悔”操作之前,先简单提及下Git的一些基础知识。 Git项目有3个区域:工作区、暂存区和Git仓库...

  • git操作指南

    git 指南 git操作 本地操作 git add 暂存工作区的修改到暂存区 git commit将暂...

  • Git学习笔记

    Git remote 对远程仓库的一些操作 add 提交工作区更改到暂存区 commit 记录对仓库的更改 指定一...

  • iOS-Git使用

    首先我们需要明白git操作的几个区域:工作区、暂存区、历史记录区。 一、撤销操作 git reset git re...

  • Git常用命令

    初始化 git init:初始化 状态查看操作 git status:查看工作区、暂存区状态 添加操作 git a...

  • 不同阶段的git提交与撤回

    区域添加操作撤销操作比较不同工作区git checkout . (有一个点)git diff暂存区git add ...

  • Git 常用命令

    git diff示意图git各种操作关系图 概念: Workspace:工作区 Index / Stage:暂存区...

  • git 学习

    git 命令学习 工作区和暂存区的区别: 工作区就是代码修改的本地区,代码git add之后就会进入暂存区,git...

  • 【git学习一】git add,commit的几个命令

    命令 git add 将文件添加到暂存区 git commit 将暂存区的内容提交到(本地)分支 工作区、暂存区和...

网友评论

      本文标题:git -- (实用)对工作区和暂存区的一些操作场景

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