【git技巧】
参考博客:https://blog.csdn.net/crjmail/article/details/100011063

git add 时,误添加不想提交的文件,如何解决?

  1. 误add所有文件
    git reset HEAD
    将所有此次修改的 file 退回到工作区

  2. 误add单个文件,只撤销部分文件
    git reset HEAD file
    将此次修改的这个 file 退回到工作区

以上操作使得被操作的文件图标从绿色变红色。

【注意】
git add 是将文件从工作区–>暂存区
git commit 是将文件从暂存区–>git本地仓库

如果 git add 一个 file 之后,又操作了该文件但未 git add ,且两次操作的地方有冲突
再 git reset HEAD file 时,文本内容将是后面的操作,而不是前面的回退

eg:
(1) 先修改 1.c 的 main 为 mai1n
$ git diff
— a/1.c
+++ b/1.c
@@ -1,4 +1,4 @@
-main
+mai1n

(2) 放到暂存区
$ git add .

(3) 再次修改 1.c 的 main 为 mai2n
$ git diff
— a/1.c
+++ b/1.c
@@ -1,4 +1,4 @@
-mai1n
+mai2n

(4) 查看 git 状态
$ git status
Changes to be committed:
modified: 1.c
Changes not staged for commit:
modified: 1.c

(5) 回退暂存区
$ git reset HEAD 1.c
Unstaged changes after reset:
M 1.c

(6) 查看状态
$ git status
Changes not staged for commit:
modified: 1.c

$ git diff
diff --git a/1.c b/1.c
— a/1.c
+++ b/1.c
@@ -1,4 +1,4 @@
-main
+mai2n

如果 git add 一个 file 之后,又操作了该文件但未 git add ,且两次操作的地方不冲突
再 git reset HEAD file 时,文本内容将是后面的操作,而不是前面的回退

(1) 修改 1.c
$ git diff
diff --git a/1.c b/1.c
index 0bd96f3…f9e2dc8 100644
— a/1.c
+++ b/1.c
@@ -1,4 +1,4 @@
hello world
-main
+main123
study

(2) 放到暂存区
$ git add .

(3) 再次修改 1.c ,在最后一行添加一行 “love”, 但是不 git add
$ git status
On branch master
Changes to be committed:
modified: 1.c
Changes not staged for commit:
modified: 1.c

$ git diff
diff --git a/1.c b/1.c
index f9e2dc8…a521094 100644
— a/1.c
+++ b/1.c
@@ -1,4 +1,4 @@
hello world
main123
study
+love

(4) 回退暂存区
$ git reset HEAD 1.c
Unstaged changes after reset:
M 1.c

$ git diff
diff --git a/1.c b/1.c
index 0bd96f3…a521094 100644
— a/1.c
+++ b/1.c
@@ -1,4 +1,4 @@
hello world
-main
+main123
study

+love

这应该是 git reset HEAD file 的一份风险点

【it rm 与 git reset的区别】
git rm:用于从工作区和索引中删除文件
git reset:用于将当前HEAD复位到指定状态。一般用于撤消之前的一些操作(如:git add,git commit等)。

git rm -f file_path
删除暂存区和分支上的文件,同时工作区也不需要

git rm --cached file_path
删除暂存区或分支上的文件, 但工作区需要使用, 只是不希望被版本控制

git reset HEAD 回退暂存区里的文件

git reset HEAD 用法相关推荐

  1. git clean和git reset结合用法

    git clean命令用来从你的工作目录中删除所有没有tracked过的文件 git clean经常和git reset --hard一起结合使用. 记住reset只影响被track过的文件, 所以需 ...

  2. git reset后本地拉取_Git学习笔记

    git工作区和本地仓库 创建本地版本库 mkdir learnGitcd learnGitgit init 添加到暂存区 touch learn.mdopen learn.mdgit add lear ...

  3. git如何查看缓存区文件内容_详解Git工作区、暂存区、历史记录区以及git reset、git revert、git checkout等撤销命令的区别...

    一.可以将git简单的分为三个区域   1.工作区(working directory)    2.暂缓区(stage index)    3.历史记录区(history)    如图: 其中git ...

  4. Git复习(十三)之git revert用法及与git reset区别

    git revert用法以及与git reset的区别 git revert用法 git revert 撤销 某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销 作为一 ...

  5. git reset用法

    git 删除 错误 提交的 commit 方法:          根据–soft –mixed –hard,会对working tree和index和HEAD进行重置:     git reset ...

  6. git 只merge部分_[Skill]俩小时掌握多人开发中git的主要用法

    前言 几个月前看完了git文档,但是在实际开发中对很多git命令的具体影响仍有疑惑,比方说pull.fetch和rebase三个命令和检出位置拎不清. Git - Book​git-scm.com 安 ...

  7. Git reset , revert, checkout的区别和联系

    转自: http://www.cnblogs.com/houpeiyong/p/5890748.html 拿来做个笔记 git reset.git checkout和git revert是你的Git工 ...

  8. git checkout和git reset的一些区别以及配置git简写命令

    一.背景 在调试代码的时候,每次都要通过git上传到服务器调试,实在是一件很麻烦的事情.所以对于一些微小的改动,我就直接在服务器上修改.等调试成功之后,用git reset再回退到之前的版本,后来经过 ...

  9. git reset --hard、git reset --sort及git revert区别

    一. 在git操作中,有时候,进行了错误的提交,但是还没有push到远程分支,想要撤销本次提交,可以使用git reset –-soft/hard命令. 1.二者区别: git reset –-sof ...

  10. git reset 命令详解(二)—— Git 学习笔记 08

    git reset 命令详解(二) 上一篇博文git reset 命令详解(一)讲了 git reset 命令的基本原理和用法,这篇博文谈一谈 git reset 的另一种用法--后面跟一个路径(或文 ...

最新文章

  1. 中国顶尖的技术社区们在一个群里,会聊什么…
  2. mysql 时区与时间函数
  3. win7电脑蓝牙 耳机
  4. Spring Boot(四):利用devtools实现热部署,改动代码自动生效
  5. plsql如何连接oracle11g_PLSQL连接Oracle11G图文教程(含PLSQL配置文件)
  6. SAP中记账码的作用
  7. SpringCloud-使用路由网关统一访问接口(附代码下载)
  8. Yii的beforeAction
  9. 小米11pro和vivox60哪个好
  10. 数据结构之最小生成树
  11. 服务化改造实践(三) | Dubbo + Zipkin
  12. devexpress 创建窗口句柄时出错_MATLAB函数句柄
  13. IOS中延时执行的几种方式的比较
  14. 华为机试HJ35:蛇形矩阵
  15. juniper防火墙策略元素
  16. 【DP】LeetCode 120. Triangle
  17. Soulver:不光会算,还懂你所言的计算器
  18. 现代处理器设计——超标量处理器基础(5-8)
  19. uniapp内使用 mescroll
  20. 计算机系统领域顶级会议--OSDI,SOSP

热门文章

  1. 太厉害了,阿里大牛把Java服务端做成一张超全的知识微缩地图
  2. 将QMessageBox对话框中按钮的“Yes/No”转换成中文的“是/否”
  3. Win11更新失败错误代码0x8007000d怎么办?
  4. 听小S教你如何瘦小腿
  5. 整理一道测试面试题(微信更换头像测试用例)
  6. 基于Android的无线视频监控的设计与实现 -- 开题报告
  7. Codeforces 731C Socks By Assassin
  8. 计算机机房灭火器种类,常见灭火器的种类、适用范围以及使用方法
  9. 个人微信支付接口在哪申请
  10. 【企业微信SCRM系统】如何通过企业微信接受个人微信好友申请?