执行 git add 后如何撤回

这篇具有很好参考价值的文章主要介绍了执行 git add 后如何撤回。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

很多刚开始使用 git 的程序员都不知道执行完 git add -A 后,该怎么撤回,那说明对 git reset 命令还没不够了解。该命令的格式有两种,

第一种的格式如下:

git reset [-q] [<tree-ish>] [--] <pathspec>…​

此表单将所有路径与 <pathspec> 匹配的 index 项重置为<tree-ish>的状态。(它不会影响工作树或当前分支。)

这意味着 git reset <pathspec>git add <pathspec> 的反向操作。此命令等效于 git restore [--source=<tree-ish>] --staged <pathspec>...

在运行 git reset <pathspec> 更新 index 条目后,可以使用 git-restore[1] 将 index 中的内容检出到工作树中。或者,使用 git-restore[1] 并使用 --source 指定一个 commit ,您可以一次性将一个 commit 中路径的内容复制到 index 和工作树。

重点来了,如果你使用了类似 git add main.c 的命令,则直接使用 git reset -- main.c 就可以撤回,它的意思是把当前分支 HEAD 所指向的 main.c 文件覆盖暂存区中的 main.c , 这样暂存区中的main.c就跟版本库一样了。但大部分时候你可能会使用 git add -A , 那要撤回还得看第二钟格式:

git reset [<mode>] [<commit>]

此表单将当前分支 head 重置为 <commit> ,并根据<mode> 可能会更新 index (将其重置为<commit> 所指向的树)和工作树。在操作之前,ORIG_HEAD 被设置为当前分支的顶端。如果省略了<mode>,则默认为 --mixed<mode> 必须是下面中的一种:

  • --soft
    完全不接触 index 文件或工作树(但将 head 重置为<commit>,就像 all modes 一样)。这使得所有更改后的文件都是 “Changes to be committed” ,正如 git status 所返回的那样。

  • --mixed
    重置 index ,但不重置工作树(即,已更改的文件被保留,但未标记为 commit ),并报告尚未更新的内容。这是默认操作。

    如果指定 -N ,删除的路径将标记为 intent-to-add (see git-add[1])

  • --hard
    重置 index 和工作树。自<commit>以来,对工作树中被跟踪文件的任何更改都将被丢弃。任何未跟踪的文件或目录在写入任何跟踪的文件时都会被简单地删除。

  • --merge
    重置 index 并更新工作树中与 <commit>HEAD 之间不相同的文件,但保留 index 和工作树之间不同的那些文件(即,具有尚未添加的更改)。如果<commit>和 index 之间不同的文件有未staged的更改,则重置将中止。

    换句话说,--merge做一些类似于 git read-tree -u -m <commit> 的事情,但将未合并的 index 项结转到前面。

  • --keep
    重置 index 项,并更新工作树中与 和 HEAD 之间不同的文件。如果与 和 HEAD 之间不同的文件具有本地更改,则重置将中止。

  • --[no-]recurse-submodules
    当工作树更新时,使用 --recurse-submodules 还将根据超级项目中记录的 commit 来递归重置所有活动子模块的工作树,并将子模块的 HEAD 在该 commit 处设置为分离头指针状态。

重点来了,如果你使用的是 git add -A ,要撤回直接使用 git reset 即可。它的意思就是用当前分支 HEAD 处的版本库重置暂存区,让暂存区与版本库保持一致,而工作区保持不变。文章来源地址https://www.toymoban.com/news/detail-479534.html

到了这里,关于执行 git add 后如何撤回的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 熟练使用git之git撤回操作

    需要关注持续更新的朋友可以关注下面的链接: git操作合集地址 1、执行了merge但没有commit 2、撤回上次或者上上次提交代码 要撤销上一次提交或上上次提交的代码,有两种常用的方法可以实现: 2.1. 使用 git revert 撤销提交: 撤销上一次提交: git revert HEAD 撤销上上次提交:

    2024年02月12日
    浏览(45)
  • Git 如何撤回已经push到远端上的代码

    首先 git log ,目的是找到这次想要撤回的提交的上一次提交,并记录下红框中的commit id                    回退代码,输入 git reset --soft commit id 回退代码,  回退完成后代码相当于刚写完的状态,即还没有进行add、commit、push的情况    最后一步,把当前的版本强制提

    2024年02月11日
    浏览(53)
  • 【Git】解决‘每次初始化一个新仓库时,都需要执行git config --global --add safe.directory命令‘

    这个命令是用来将一个安全目录添加到全局的 Git 配置中。但每次克隆一个仓库或者新建一个仓库,并且对该仓库进行操作时,都需要执行该命令,十分麻烦! 这是因为,Git 近期进行了版本升级,添加了新的目录安全限制。造成在进行git常规操作时无法发现.git文件。 方案一

    2024年04月08日
    浏览(55)
  • git add 后,如何撤销add?

    修改本地代码,然后使用: 执行add后,还没执行commit时,想要撤销这次add,该怎么办? 撤销单个文件: 撤销多个文件:

    2024年02月11日
    浏览(42)
  • 为什么很多程序员喜欢linux系统?

    a Linux哪些行业在运用? Linux系统运用极其广泛,不少用户只知道windows,是因为,Linux的运用主要是在企业端。现在科技极其发达,我们手机在手,就能干很多事情,只需点一点屏幕,轻松完成聊天、娱乐、甚至支付功能。这些操作看似简单,但其背后,有一系列复杂请求和响

    2024年02月03日
    浏览(67)
  • git add或commint或push后如何撤销

    平常项目比较多,代码分支也比较多,很容易出现代码推送错误,撤销修改、冲突等情况。无论手动操作或vscode左上角源代码管理或者使用SourceTree工具,都难免会发生。解决场景如下: add . 命令: git reset HEAD 一般这种比较容易,此时代码还没commit时可以在编辑器上看到,也

    2024年02月05日
    浏览(38)
  • 开源项目九死一生,但很多程序员坚持开源??

    大家好,欢迎来到停止重构的频道。 本期我们讨论一个开放问题。 为什么流行的开源项目只是凤毛麟角 ,且很多有名的开源项目都是背靠大公司的。 但是,为什么还有很多个人开发者愿意开源项目 呢? 欢迎大家把自己的想法或开源项目发在评论区,或者给一些想要开源项

    2024年02月03日
    浏览(48)
  • 程序员:你如何写可重复执行的SQL语句?

    上图的意思: 百战百胜,屡试不爽。 程序员小张: 刚毕业,参加工作1年左右,日常工作是CRUD 架构师老李: 多个大型项目经验,精通各种开发架构屠龙宝术; 小张注意到,在实际的项目开发场景中,很多开发人员只关注编写SQL脚本来满足功能需求,而忽略了脚本的可重复

    2024年02月10日
    浏览(33)
  • 为什么很多程序员不用switch,而是大量 的if......else if?

    不会吧还有人用if else和switch case?三目运算符? 不会吧? 不会吧?大佬都是全都不用的!以JAVA为例 条件判断语句的四种写法,茴字的四种写法大家不会不知道吧 1.正常人写法: //输出 :张三应该去男厕所 2.Lambda策略模式写法: 某些大公司P6级别以上(年薪30w-50w)标准写法

    2024年02月15日
    浏览(55)
  • git操作——撤回修改

    1.1 放弃修改某个文件 1.2放弃修改所有文件 这个命令不会删除新建的文件,因为新建的文件还没有被add到仓库,不能被git操控,只能通过手动删除 2.1放弃修改某个文件 2.2放弃所有文件的修改 这个时候还没有完全撤回所有的修改,这个命令是清除了所有的缓存,也就是回到了

    2024年01月19日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包