首页 > 其他分享 >git commit 撤销的三种方法

git commit 撤销的三种方法

时间:2024-05-15 15:08:34浏览次数:22  
标签:HEAD git -- 撤销 提交 commit

一般在提交代码的时候,顺序是这样的

git status // 查看修改文件状态(已添加至暂存区还是未添加至暂存区)
git add . // 添加所有已修改文件
git add xxx/xxx // 添加目录为xxx/xxx的文件至暂存区
 
git commit -m 'xx功能全部完成' // 提交暂存区代码至仓库中
// 在仓库中创建了一个新的提交对象,并且更新了分支以指向这个新的提交对象
git push // 将代码推送至远程仓库

git add 可以看做是 “准备提交”git commit 可以看做是 “执行提交”

撤销 commit

那么在执行完 commit 之后,想撤回 commit,怎么办?

git reset --soft HEAD^

HEAD^ 意思是上一个版本,也可以写成 HEAD~1
如果进行了 2commit,都想撤回,可以使用 HEAD~2

1. 撤销 commit、并撤销 git add. 操作、不撤销修改代码

--mixed

git reset --mixed HEAD^
git reset HEAD^
// 效果和 git reset --mixed HEAD^ 一样,--mixed 是默认参数

以上操作将把HEAD指针移动到父提交,但不会改变工作目录中的文件,修改将被保留。

2. 撤销 commit、不撤销git add .

soft

git reset --soft HEAD^
3. 撤销 commit、撤销 git add . 操作、撤销修改代码

hard

 git reset --hard HEAD^
  • 这个命令将HEAD指针移动到当前提交的父提交,并且使用--hard选项会使工作目录中的文件恢复到这个父提交的状态;
  • 这意味着所有自上次提交以来的未提交的修改都将被删除;
  • 如果想保留这些修改,可以使用git stash命令来保存它们,然后在需要的时候再应用这些修改。

顺便提一嘴,如果想要修改 commit 注释,可以执行git commit --amend,此时会进入默认vim 编辑器,修改注释完毕后保存就好了。

标签:HEAD,git,--,撤销,提交,commit
From: https://www.cnblogs.com/name-lizonglin/p/18193878

相关文章

  • git配置了 .gitignore 文件,但是不生效
    方法一.gitignore中已经标明忽略的文件目录下的文件,gitpush的时候还会出现在push的目录中,或者用gitstatus查看状态,想要忽略的文件还是显示被追踪状态。原因是因为在git忽略目录中,新建的文件在git中会有缓存,如果某些文件已经被纳入了版本管理中,就算是在.gitignore中已经声明了......
  • git仓库ssh连接
    1、创建ssh秘钥:1)设置git账户:gitconfig--globaluser.email"[email protected]"gitconfig--globaluser.name"zhouyehong"2)创建ssh公钥:ssh-keygen-trsa-C'[email protected]'2、添加到个人git账户:1)cat~/.ssh/id_r......
  • 使用Git命令从本地上传到码云
    Gitee创建仓库内没有内容本地:初始化Git仓库:gitinit提交文件到暂存区:gitadd.//.表示提交所有文件提交文件到工作区:gitcommit-m"此次提交的描述,简介明了的描述"关联码云仓库:gitremoteaddoriginhttps://gitee.com/xxxx/xxxxx.git推送到远程仓库:gitpush-uorigin......
  • GitLab 管理 NuGet 包
    1概览在服务器上构建项目时,需要引用nuget.org之外的包,如公司内部开发的、第三方未发布到nuget.org上的。怎么办?GitLab提供了PackageRegistry来解决这个问题。2上传NuGet包到指定项目中新建或使用一个已有项目,作为存放NuGet包的项目,为其他需要引用对应NuGet......
  • Gitee千Star优质项目解析: ng-form-element低开引擎解析
    好家伙,在写项目的时候,我发现自己的平台的组件写的实在是太难看了,于是想去gitee上偷点东西,于是我们本期的受害者出现了gitee项目地址https://gitee.com/jjxliu306/ng-form-elementplus-sample.git组件库以及引擎完全开源,非常牛逼的项目,非常牛逼的作者 项目名:ng-form-......
  • Windows下git配合Unity要设置autocrlf=false
    Unity的.asset文件的换行符一定是Unix(LF)格式的,哪怕在设置里选了用Windows(CRLF)也没用。这个选项貌似只对创建的C#Script有效。这些Unix换行文件提交上去没问题,但如果你想revert或者checkout,就会变成Windows换行,然后如果在Unity里面修改了,哪怕最后实际数值没有变化,也会给你......
  • git 查看当前代码是在哪个 tag 上
    在Git中,查看当前代码所在的tag可以使用以下命令:###查看当前提交所对应的所有tag如果你想查看当前HEAD或者某个特定的commit对应的所有tag,可以使用下面的命令:gittag--containsHEAD这个命令会列出包含当前HEAD的所有tag。如果你想查看某个特定commit的......
  • linux生成ssh的一对公钥和私钥,然后配置git ssh拉取仓库代码
    linuxserver中如果想通过ssh方式拉取代码,那么就需要做一些配置:1.需要linux生成ssh的一对公钥和私钥:具体可以参考这篇文章:https://www.cnblogs.com/pingguomang/p/17926730.html 2.把这个公钥配置到gitlab仓库的sshandgpgkeys中:进入gitlab密钥对设置settings页面->SSHan......
  • python 虚拟环境中无法调用git 命令 处理方法
    确认Git安装:首先,确保Git已经安装在您的系统上。打开命令行窗口,运行git--version检查Git是否已安装以及其版本。手动设置GIT_PYTHON_GIT_EXECUTABLE:如果Git已安装,但gitpython仍然找不到它,您可能需要手动设置环境变量GIT_PYTHON_GIT_EXECUTABLE。在WindowsPower......
  • 3 个好玩的前端开源项目「GitHub 热点速览」
    单休的周末总是短暂的,还没缓过神新的一周就又开始了。如果你和我一样状态还没有完全恢复,那就让上周好玩的开源项目唤醒你吧!每周GitHub上总是有一些让人眼前一亮的开源项目,上周好玩的前端项目特别多,比如这个3D地球的JavaScript组件Cesium,作为老牌地理信息可视化组件又一次......