git commit撤销修改

背景

如果提交了代码,却发现有不需要提交的文件。这时候如何修改呢?可以用git reset指令。

git reset用法解释

git reset 命令用于回退版本,可以指定退回某一次提交的版本。

git reset 命令语法格式如下:

git reset [--soft | --mixed | --hard] [HEAD]

--mixed 为默认,可以不用带该参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。

git reset  [HEAD] 

实例:

$ git reset HEAD^            # 回退所有内容到上一个版本  
$ git reset HEAD^ hello.php  # 回退 hello.php 文件的版本到上一个版本  
$ git  reset  052e           # 回退到指定版本

--soft 参数用于回退到某个版本:

git reset --soft HEAD

实例:

$ git reset --soft HEAD~3   # 回退上上上一个版本 

--hard 参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交:

git reset --hard HEAD

实例:

$ git reset --hard HEAD~3  # 回退上上上一个版本  
$ git reset --hard bae128  # 回退到某个版本回退点之前的所有信息。 
$ git reset --hard origin/master    # 将本地的状态回退到和远程的一样 

**注意:**谨慎使用 ---hard 参数,它会删除回退点之前的所有信息。

HEAD 说明:

  • HEAD 表示当前版本
  • HEAD^ 上一个版本
  • HEAD^^ 上上一个版本
  • 以此类推...

可以使用 ~数字表示

  • HEAD~0 表示当前版本
  • HEAD~1 上一个版本
  • HEAD^2 上上一个版本
  • 以此类推...

操作实例

shell 复制代码
JackChen@ABC MINGW64 /d/Code/test (master)
$ touch a.txt
[1]+  Done                    gitk --all

JackChen@ABC MINGW64 /d/Code/test (master)
$ git add a.txt 

JackChen@ABC MINGW64 /d/Code/test (master)
$ git commit -m"add text"
[cat1 990152f6] add text
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 a.txt

JackChen@ABC MINGW64 /d/Code/test (master)
$ git status
On branch cat1
Your branch is ahead of 'origin/cat1' by 1 commit.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean

JackChen@ABC MINGW64 /d/Code/test (master)
$ git log
commit 990152f6572a51ce37272bcef7879d3fe2a8f24b (HEAD -> cat1)
Author: JackChen
Date:   Fri Jun 21 11:11:58 2024 +0800

    add text
    
    Change-Id: I0896f0513dd0c580a5c649ac18e8462ff00c3331


JackChen@ABC MINGW64 /d/Code/test (master)
$ git reset --soft 5399da1f4

JackChen@ABC MINGW64 /d/Code/test (master)
$ git status
On branch cat1
Your branch is up to date with 'origin/cat1'.

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        new file:   a.txt

JackChen@ABC MINGW64 /d/Code/test (master)
$ git commit -m"add text"
[cat1 f00c31c8] add text
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 a.txt

JackChen@ABC MINGW64 /d/Code/test (master)
$ git reset 5399da1f4

JackChen@ABC MINGW64 /d/Code/test (master)
$ git status
On branch cat1
Your branch is up to date with 'origin/cat1'.

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

nothing added to commit but untracked files present (use "git add" to track)
相关推荐
T0uken2 小时前
【Git】远程仓库操作
大数据·git
萌狼蓝天8 小时前
git恢复到之前提交的记录
git
是程序喵呀8 小时前
git的基本使用
大数据·git
a未来永远是个未知数8 小时前
构建机部署之git安装(Linux)
linux·git·elasticsearch
丁总学Java8 小时前
命令行运行git reflog(reference log)报错的解决办法
git·reference·log·reflog
右璇14 小时前
Git 常用命令备忘
git
小鹿( ﹡ˆoˆ﹡ )18 小时前
Git使用简介及相关命令
git
Marvin-Fox19 小时前
GIT 使用相关技巧记录
git
不想步入秃头的年龄1 天前
Git学习(常用的一些命令)
git·学习
pcdd1 天前
【Git】取消追踪多个文件或目录
git