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)
相关推荐
春日见7 小时前
如何创建一个PR
运维·开发语言·windows·git·docker·容器
stevenzqzq1 天前
git 常用操作
大数据·git
Curvatureflight1 天前
Git工作流最佳实践:从混乱到优雅
git
wu~9701 天前
GitHub永不遗忘,使用git push -f来覆盖的提交依旧保留
git·github
Vermouth_001 天前
git clone的时候提示access denied
git
qq_437657271 天前
清楚本地的git并重新登录
git
jiang_changsheng1 天前
工作流agent汇总分析 2
java·人工智能·git·python·机器学习·github·语音识别
顶点多余1 天前
版本控制器-git
linux·git
夔曦1 天前
Git工程日常下拉/上传完整流程(自用)
git
岱宗夫up1 天前
GitHub Desktop如何设置中文?这不是个简单问题
git·github