0


如何撤销已提交的 Git 代码(已push和已commit)

如何撤销已提交的 Git 代码

Git 是一个被广泛使用的版本控制系统,能够帮助开发者灵活地管理代码。但是,有时我们可能需要撤销已经提交的代码。本篇文章将详细介绍如何使用 Git 命令来撤回已提交但尚未推送的代码,以及在不同情境下的最佳实践。

在以下一些常见情况下,可能需要撤销已提交的代码:

  1. 不小心提交了包含密码或 API 密钥的代码。
  2. 提交的代码不完整或存在问题,需要进一步修改。
  3. 提交信息填写错误,需要重新整理。
  4. 将个人配置文件或私有依赖提交到共享仓库,影响团队协作。
  5. 想将多次零散的提交合并为一个更有意义的提交。

在这些情况下,Git 撤回功能非常有用,可以帮助你修正错误、优化提交历史,并保持代码库的整洁和安全。

Git Reset 模式

git reset

命令有三种主要模式用于撤销提交:

--soft

--mixed

--hard

  • --soft:撤销提交,但保留暂存区的状态,适用于需要保留代码改动的情况。
  • --mixed(默认):撤销提交并清除暂存区的状态,但保留工作目录中的代码改动。
  • --hard:删除提交并删除工作目录中的代码改动。

选择合适的模式非常重要,尤其在使用

--hard

模式时要特别谨慎,因为它可能导致代码无法恢复的丢失。

如何撤销已提交(commit)的代码

基本撤销方法

可以使用

git reset

命令来撤销提交,根据不同需求,有以下三种模式:

--soft 模式
  • 不删除工作目录中的代码改动。
  • 只撤销提交,保留暂存区的状态。
  • 使用命令:
git reset --soft HEAD^
--mixed 模式(默认)
  • 不删除工作目录中的代码改动。
  • 撤销提交和暂存区的状态。
  • 使用命令:
git reset HEAD^

git reset --mixed HEAD^
--hard 模式
  • 删除工作目录中的代码改动。
  • 撤销提交和暂存区状态。
  • 使用命令:
git reset --hard HEAD^
撤销指定的提交版本

可以通过以下方式指定要撤销的版本:

  1. 使用 HEAD^ 表示上一个提交版本:git reset --soft HEAD^ # 撤销最近一次提交git reset --soft HEAD~2 # 撤销最近两次提交

2.使用提交的 commit ID:

git reset --soft <commit-id>  # 回退到指定的提交版本
修改提交信息

如果只需要修改最后一次提交的注释信息,可以使用以下命令:

git commit --amend
注意事项
  1. git reset 只能回滚最新的提交,无法单独回滚某个历史提交。
  2. 如果代码已推送到远程仓库,需要在本地执行 reset 后,再强制推送:
git push origin <branch-name> --force
  1. 建议使用 --soft 模式,以避免丢失代码改动。

如何撤回已推送(Push)的代码

方法一:使用
git revert

(推荐)

git revert

是最安全的方式,因为它不会删除提交历史:

# 1. 查看提交历史
git log

# 2. 撤销指定的 commit
git revert <commit-id>

# 3. 推送到远程仓库
git push origin <branch-name>

这种方法会通过创建一个新的提交来撤销之前的更改。

方法二:使用
git reset

这种方式会修改提交历史,需谨慎使用:

# 1. 使用 reset 回退版本
git reset --soft HEAD^  # 撤销最近一次 commit,保留代码改动
# 或
git reset --hard HEAD^  # 撤销 commit 并删除代码改动

# 2. 强制推送到远程
git push -f origin <branch-name>
reset

有三种模式:

  • --soft:只撤销 commit,保留代码修改。
  • --mixed:撤销 commit 和 add,保留代码修改。
  • --hard:完全撤销修改,删除代码改动。
注意事项
  1. 使用 git revert 更安全,因为它不会删除提交历史。
  2. 使用 git reset --force 时要谨慎,因为它会重写历史,可能影响其他开发者。
  3. 如果其他人已经拉取了要撤销的代码,建议使用 git revert 而不是 reset
  4. 在执行这些操作之前,建议先备份代码或创建一个新分支。

原文:https://juejin.cn/post/7431228571492974602

标签: git 开发语言 前端

本文转载自: https://blog.csdn.net/gaotlantis/article/details/143361558
版权归原作者 前端77 所有, 如有侵权,请联系我们删除。

“如何撤销已提交的 Git 代码(已push和已commit)”的评论:

还没有评论