首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >git 中的回退

git 中的回退

作者头像
jgrass
发布2024-12-25 16:01:53
发布2024-12-25 16:01:53
3040
举报
文章被收录于专栏:蔻丁杂记蔻丁杂记

使用git的时候,犯错误了怎么办。以下是一些常规的回退措施。

本文内容稍显陈旧,可以参考这篇:

深入理解Git - 一切皆commit - J.晒太阳的猫 - 博客园

首先,需要了解上一篇笔记里提到的一些基本概念。

先上图

git reset

推荐一篇博客:git reset简介

git reset filename

撤销文件的暂存 git reset filename

撤销暂存区所有的文件暂存 git reset .

下文中的 commitId 指任何可以指代一次提交的标识,如 id ; branch name ; tag name ; HEAD^ ;

git reset —soft

git reset --soft commitId

撤销到 commitId 标识的提交完成之后状态(commitId的那次提交不会被撤销), 并将那次提交之后的修改,都放到暂存区。

git reset —mixed

git reset --mixed commitid

撤销到 commitId 标识的提交完成之后状态(commitId的那次提交不会被撤销), 并将那次提交之后的修改,都放到编辑区,与现在编辑区中的内容合并(如果现在编辑区中有内容的话)。

git reset —hard

git reset --hard commitid

撤销到 commitId 标识的提交完成之后状态(commitId的那次提交不会被撤销), 并将那次提交之后的修改,都丢弃。 达到的效果就是,执行这条命令的分支,会指向commitId指向那次提交。

如在dev分支执行: git reset --hard origin/dev ,达到的效果就是让dev分支与 origin/dev 分支(本地远程仓库中的dev分支)完全一致。

git checkout

checkout 除了切换分支,还可以撤销文件的修改(对于那些没有使用add等命令加入到暂存区的修改)

git checkout -- filename 撤销指定文件的修改

git checkout -- . 撤销全部文件的修改

PS: 可以使用通配符

git revert

如果某个提交已经Push到远程仓库,是不可以用reset的方法删除提交的,这时就要撤销提交。(如果是自己的远端分支,可以删除远端分支后重新push,但对于公共分支就不能这样了。)

git revert 是生成一个新的提交来撤销某次提交,此次提交之前的commit都会被保留。

git revert commitId 是撤消该commit,作为一个新的commit。

git revert dev : 生成一个新提交,撤销dev分支的最后一次提交。

git commit —amend

git commit

如果我们提交过后发现有个文件改错了,或者只是想修改提交说明,这时可以对相应文件做出修改,将修改过的文件通过”git add”添加到暂存区,然后执行以下命令: git commit --amend

然后修改提交说明覆盖上次提交,但只能重写最后一次提交。

staged and stash

staged 和 stash 是两个不同的概念,尤其使用暂存这个词时。

staged 是 modified staged commit 几种状态中的一个。

stash 是将没有提交的代码临时存储到一个堆栈,以便于切换分支或做其它操作。

原文链接: https://cloud.tencent.com/developer/article/2481435

本作品采用 「署名 4.0 国际」 许可协议进行许可,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年11月26日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • git reset
    • git reset filename
    • git reset —soft
    • git reset —mixed
    • git reset —hard
  • git checkout
  • git revert
  • git commit —amend
  • staged and stash
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档