git怎么取消commit

青灯夜游
Freigeben: 2021-11-29 15:20:07
Original
217490 Leute haben es durchsucht

git取消commit的方法:1、利用“git rm”命令撤销;2、利用“git reset”命令撤销;3、利用“git rebase”命令撤销;4、利用“git revert”命令撤销。

git怎么取消commit

本教程操作环境:Windows7系统、Git2.30.0版、Dell G3电脑。

有时我们提交了错误的代码,需要撤销某次的 commit 记录,下面介绍几种方法:

一、删除文件

如果需要删除的 commit 是一个或多个文件,可以进行以下操作。

1、被提交到仓库的某个文件需要删除,可以使用git rm命令:

git rm  // 从工作区和暂存区删除某个文件 git commit -m "" // 再次提交到仓库
Nach dem Login kopieren

2、如果只想从暂存区删除文件,本地工作区不做出改变,可以:

git rm --cached 
Nach dem Login kopieren

3、如果在工作区不小心删错了某个文件,可以用git checkout将暂存区的文件覆盖工作区的文件,从而把误删的文件恢复:

git checkout -- 
Nach dem Login kopieren

4、用git rm删除文件,同时还会将这个删除操作记录下来;

rm删除文件,删除的仅仅是本地物理文件,没有将其从 git 的记录中剔除。

5、git addgit rm有相似的功能,

git add仅能记录添加、改动的动作,删除的动作需靠git rm来完成。

二、GitHub 撤销某次 commit

如果需要删除的不只是某个文件,而是交错的代码,那么有以下三种方法可以删除 commit 。

1、git reset

  • git reset:回滚到某次提交。
  • git reset --soft:此次提交之后的修改会被退回到暂存区。
  • git reset --hard:此次提交之后的修改不做任何保留,git status查看工作区是没有记录的。

1)回滚代码

如果需要删除的 commit 是最新的,那么可以通过git reset命令将代码回滚到之前某次提交的状态,但一定要将现有的代码做好备份,否则回滚之后这些变动都会消失。具体操作如下:

git log // 查询要回滚的 commit_id git reset --hard commit_id // HEAD 就会指向此次的提交记录 git push origin HEAD --force // 强制推送到远端
Nach dem Login kopieren

2)误删恢复

如果回滚代码之后发现复制错了 commit_id,或者误删了某次 commit 记录,也可以通过下方代码恢复:

git relog // 复制要恢复操作的前面的 hash 值 git reset --hard hash // 将 hash 换成要恢复的历史记录的 hash 值
Nach dem Login kopieren
  1. 注意:删除中间某次提交时最好不要用git reset回退远程库,因为之后其他人提交代码时用git pull也会把自己的本地仓库回退到之前的版本,容易出现差错进而增加不必要的工作量。

2、git rebase

  • git rebase:当两个分支不在一条线上,需要执行 merge 操作时使用该命令。

1)撤销提交

如果中间的某次 commit 需要删除,可以通过git rebase命令实现,方法如下:

git log // 查找要删除的前一次提交的 commit_id git rebase -i commit_id // 将 commit_id 替换成复制的值 进入 Vim 编辑模式,将要删除的 commit 前面的 `pick` 改成 `drop` 保存并退出 Vim
Nach dem Login kopieren

这样就完成了。

2)解决冲突

该命令执行时极有可能出现 reabase 冲突,可以通过以下方法解决:

git diff // 查看冲突内容 // 手动解决冲突(冲突位置已在文件中标明) git add  或 git add -A // 添加 git rebase --continue // 继续 rebase // 若还在 rebase 状态,则重复 2、3、4,直至 rebase 完成出现 applying 字样 git push
Nach dem Login kopieren

3、git revert

  • git revert:放弃某次提交。
    git revert之前的提交仍会保留在 git log 中,而此次撤销会做为一次新的提交。
  • git revert -m:用于对 merge 节点的操作,-m 指定具体某个提交点。

1)撤销提交

要撤销中间某次提交时,使用git revert也是一个很好的选择:

git log // 查找需要撤销的 commit_id git revert commit_id // 撤销这次提交
Nach dem Login kopieren

2)撤销 merge 节点提交

如果这次提交是 merge 节点的话,则需要加上-m指令:

git revert commit_id -m 1 // 第一个提交点 // 手动解决冲突 git add -A git commit -m "" git revert commit_id -m 2 // 第二个提交点 // 重复 2,3,4 git push
Nach dem Login kopieren

推荐学习:《Git教程

Das obige ist der detaillierte Inhalt vongit怎么取消commit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
git
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!