【Git】 取消上一次commit或push

目录

一、取消上一次commit

方法1:使用 Git reset

方法2:使用 Git revert

方法3:使用 Git checkout

二、取消上一次push

git push --force

git reflog

git reset

git push --force

三、扩展

commit参数

--mixed

--soft

--hard

--amend


一、取消上一次commit

如果你需要取消上一次的 Git 提交,有几个不同的方法可以实现。其中包括撤消提交、提交到新的分支、使用 Git 回滚等等。

下面介绍三种方法:

方法1:使用 Git reset

使用 Git reset 命令来取消上一次提交:

git reset HEAD~1

这会把 HEAD 指针移回上一个提交(HEAD~1),并清除最后一次提交的内容。

git reset HEAD^

撤回两次或者n次

git reset HEAD~2

方法2:使用 Git revert

使用 Git revert 命令来撤消上一次提交并创建一个新的提交来撤消原来的提交:

git revert HEAD

这会创建一个新的提交来撤消提交之前的更改。在命令行中输入该命令后,你需要编辑撤消的提交信息,以便 Git 创建一个新的提交。

方法3:使用 Git checkout

还可以使用 Git checkout 命令来将工作树恢复到上一次提交的状态。这将清除所有未提交的更改,所以请确保你有一个备份:

git checkout HEAD~1

这会将工作树恢复到上一次提交的状态,也就是你上一次提交之前的状态。请注意,这里的修改都将被丢弃。

无论你使用的是哪种方法,请确保在撤消提交之前首先备份你的工作。这可以帮助你避免在操作过程中意外删除无法恢复的内容。

二、取消上一次push

如果你已经push了代码,并且想要撤回这个commit,可以通过以下步骤实现:

git push --force

首先,在使用git push命令时,需要加上--force参数,强制覆盖远程仓库上已经存在的commit。命令如下:

git push --force origin <branch_name>

其中,<branch_name>表示你要撤销的分支名称。

git reflog

如果在本地仓库没有回到该commit的上一个状态,需要使用git reflog命令找到该commit的SHA-1值。命令如下:

git reflog

该命令会列出整个Git仓库的提交历史记录,包括HEAD指针所指向的提交和已经被废弃的提交。

git reset

找到要回到的某个commit的SHA-1值,然后使用如下命令回到该commit的状态:

git reset --hard <commit_SHA-1>

其中,<commit_SHA-1>表示要回到的commit的SHA-1值。

git push --force

然后使用之前的推送命令进行推送,添加--force参数,覆盖远程仓库的历史提交记录。命令如下:

git push --force origin <branch_name>

提醒:使用git push --force命令可能会导致远程仓库、其他成员的仓库和历史版本产生不可逆的影响,因此操作时需要谨慎。一般情况下,在工作流中使用git revert命令回滚某个commit,以保证版本控制的完整性和可维护性。

三、扩展

git log  查看提交日志

commit参数

--mixed

 不删除工作空间改动代码,撤销 commit,并撤销 git add . 操作

 git reset --mixed HEAD^ 效果等同 git reset HEAD^

--soft

    不删除工作空间改动代码,撤销commit,不撤销git add .

--hard

    删除工作空间改动代码,撤销commit,撤销git add .

--amend

修改注释, 进入vim编辑器, 改完:wq即可

有用请点赞,养成良好习惯!

鼓励、交流、疑问请留言!

### 取消待处理的Git主分支合并请求 当想要取消一个已经发起但尚未完成的 Git 主分支合并请求时,具体的操作取决于所使用的平台(如 GitHub、GitLab Bitbucket)。以下是通用的方法来撤销未完成的合并请求: #### 在命令行环境中撤回本地已开始但未提交的合并 如果合并还没有被最终确认(即还未执行 `git commit`),可以通过重置工作目录回到合并前的状态。这通常意味着放弃所有来自尝试合并产生的变更。 ```bash # 终止正在进行中的合并过程,并清理相关文件状态 git merge --abort ``` 此命令会恢复到最近一次成功的提交状态,丢弃任何由于部分完成的合并在工作树中引入的变化[^1]。 #### 关闭在线平台上处于开放状态下的Pull/Merge Request 对于已经在Web界面创建了 Pull Request (PR) 者 Merge Request(MR),但是不希望继续推进该请求的情况,则应该登录对应的代码托管服务网站,找到相应的 PR / MR 页面,通过页面上的选项关闭它而不是删除整个分支。这样做的好处是可以保持历史记录透明度,让团队成员了解曾经有过这样的提议以及为何终止。 - **GitHub**: 访问 PR 页面,滚动到底部,在评论框上方有一个按钮可以选择 “Close pull request”。 - **GitLab**: 找到 MR 的详情页,“State” 下拉菜单中有“Close”的选项可以直接点击关闭。 - **Bitbucket**: 类似地,在 PR 视图里有专门用于关闭请求的功能键[^3]。 #### 清理不再需要的特性分支 一旦决定停止某个功能开发者其关联的合并请求已被拒绝/关闭之后,可能还会剩下一些临时性的主题分支不需要保留。这时可以考虑安全地移除这些分支以减少仓库复杂性和混乱程度。 ```bash # 删除本地分支 git branch -D <branch-name> # 移除远程跟踪分支 git push origin --delete <branch-name> ``` 上述操作能够有效地帮助开发者管理好自己的版本库结构,确保只留下必要的长期存在的分支。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慕白Lee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值