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)
相关推荐
我不是程序猿儿29 分钟前
【GIT】TortoiseGit的变基(Rebase)操作
git
yyycqupt7 小时前
git使用(一)
git
Kkooe11 小时前
GitLab|数据迁移
运维·服务器·git
Beekeeper&&P...12 小时前
git bash是什么,git是什么,git中的暂存区是什么,git中的本地仓库是什么,git中工作目录指的是什么
开发语言·git·bash
Stara051116 小时前
Git推送+拉去+uwsgi+Nginx服务器部署项目
git·python·mysql·nginx·gitee·github·uwsgi
lsswear16 小时前
GIT 操作
git
勋勋勋勋小勋勋17 小时前
git分支合并某一次提交
git
PandaCave18 小时前
git常用命令以及注意事项总结
git
算你狠 - ZGX1 天前
Git使用
git