0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Git撤消操作的方法

麦辣鸡腿堡 来源:嵌入式Linux系统开发 作者:嵌入式Linux系统开 2023-07-22 11:29 次阅读

撤消操作

在任何一个阶段,你都有可能想要撤消某些操作。注意,有些撤消操作是不可逆的。

有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。此时,可以运行带有 --amend 选项的提交命令来重新提交:

$ git commit --amend

这个命令会将暂存区中的文件提交。如果自上次提交以来你还未做任何修改(例如,在上次提交后马上执行了此命令), 那么快照会保持不变,而你所修改的只是提交信息。

文本编辑器启动后,可以看到之前的提交信息。编辑后保存会覆盖原来的提交信息。

例如,你提交后发现忘记了暂存某些需要的修改,可以像下面这样操作:

$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend

最终你只会有一个提交——第二次提交将代替第一次提交的结果。

取消暂存的文件

如何操作暂存区和工作目录中已修改的文件。这些命令在修改文件状态的同时,也会提示如何撤消操作。例如,你已经修改了两个文件并且想要将它们作为两次独立的修改提交, 但是却意外地输入git add * 暂存了它们两个。如何只取消暂存两个中的一个呢?git status 命令提示了你:

$ git add *

$ git status
On branch master
Changes to be committed:
(use "git reset HEAD < file >..." to unstage)
renamed: README.md - > README
modified: CONTRIBUTING.md

在 “Changes to be committed” 文字正下方,提示使用 git reset HEAD xxx 来取消暂存。所以,我们可以这样来取消暂存 CONTRIBUTING.md 文件:

$ git reset HEAD CONTRIBUTING.md
Unstaged changes after reset:
M CONTRIBUTING.md

$ git status
On branch master
Changes to be committed:
(use "git reset HEAD < file >..." to unstage)
renamed: README.md - > README
Changes not staged for commit:
(use "git add < file >..." to update what will be committed)
(use "git checkout -- < file >..." to discard changes in working
directory)
modified: CONTRIBUTING.md

CONTRIBUTING.md 文件已经是修改未暂存的状态了。

撤消对文件的修改

如果你并不想保留对 CONTRIBUTING.md 文件的修改怎么办?你该如何方便地撤消修改——将它还原成上次提交时的样子(或者刚克隆完的样子,或者刚把它放入工作目录时的样子)?

幸运的是,git status 也告诉了你应该如何做。在最后一个例子中,未暂存区域是这样:

Changes not staged for commit:
(use "git add < file >..." to update what will be committed)
(use "git checkout -- < file >..." to discard changes in working directory)
modified: CONTRIBUTING.md

它非常清楚地告诉了你如何撤消之前所做的修改。让我们来按照提示执行:

$ git checkout -- CONTRIBUTING.md

$ git status
On branch master
Changes to be committed:
(use "git reset HEAD < file >..." to unstage)
renamed: README.md - > README

可以看到那些修改已经被撤消了。

请务必记得 git checkout -- xxx 是一个危险的命令。你对那个文件在本地的任何修改都会消失——Git 会用最近提交的版本覆盖掉它。除非你确实清楚不想要对那个文件的本地修改了,否则请不要使用这个命令。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 文件
    +关注

    关注

    1

    文章

    561

    浏览量

    24683
  • Git
    Git
    +关注

    关注

    0

    文章

    196

    浏览量

    15728
收藏 人收藏

    评论

    相关推荐

    Git常用的超级实用命令

    的一些Git工作流。 1 Git 常用的超级实用命令 1.1 与仓库相关的操作 克隆代码仓库到本地,开发必用 git clone 查看本地仓库配置了那些对应的远程仓库。
    的头像 发表于 10-09 17:19 1130次阅读
    <b class='flag-5'>Git</b>常用的超级实用命令

    git使用方法

    git使用方法
    发表于 10-24 09:45 19次下载
    <b class='flag-5'>git</b>使用<b class='flag-5'>方法</b>

    Git是什么?Git的基本使用资料说明

      Git是什么? Git是目前世界上最先进的分布式版本控制系统(没有之一)。
    发表于 05-29 17:56 1次下载
    <b class='flag-5'>Git</b>是什么?<b class='flag-5'>Git</b>的基本使用资料说明

    Git Flow应该抛弃的原因

    Git-flow 是一种分支和合并方法。十年前,因为一篇名为「一个成功的 Git 分支模型」的文章,Git-flow 变得广为人知。
    的头像 发表于 03-21 13:41 1476次阅读
    <b class='flag-5'>Git</b> Flow应该抛弃的原因

    Git在实际工作中的基本使用方法

    中的基本使用方法。 一、Git的下载、安装及配置 1、Git与Github: Git:分布式版本控制系统。 GitHub:面向开源及私有软件项目的托管平台。与GitHub类似的是Git
    的头像 发表于 09-14 18:12 2535次阅读

    Git 命令+原理 程序员必备的基础

    掌握Git命令是每位程序员必备的基础,之前一直是用smartGit工具,直到看到大佬们都是在用Git命令操作的,回想一下,发现有些Git命令我都忘记了,于是写了这篇博文,复习一下~ 文
    的头像 发表于 11-14 10:01 1719次阅读
    <b class='flag-5'>Git</b> 命令+原理 程序员必备的基础

    GIT合代码的经典操作场景

    git对于大家应该都不太陌生,熟练使用git已经成为程序员的一项基本技能,尽管在工作中有诸如 Sourcetree这样牛X的客户端工具,使得合并代码变的很方便。但找工作面试和一些需彰显个人实力的场景,仍然需要我们掌握足够多的git
    的头像 发表于 04-09 16:42 1510次阅读

    利用Learn Git Branching轻松学习Git

    托管网站,与他人协作管理推进开源项目必须要掌握的工具。 而Git中的常用操作,虽然上手难度低,但涉及到细节处尤其是多分支操作,难免会让很多新手犯糊涂,今天我就给大家推荐一个开源项目,帮助使用者在轻松游戏的过程中熟练掌握
    的头像 发表于 09-15 14:53 1513次阅读

    如何设置Git的SSH秘钥

    Git之后,感觉Git比Svn好用多了,Svn在大的代码情况下,那下载和上传的速度懂的人都懂啊!下面记录一下使用ssh秘钥链接本地与远程代码库的操作方法
    的头像 发表于 02-10 11:30 1853次阅读
    如何设置<b class='flag-5'>Git</b>的SSH秘钥

    什么是Git基本操作指令

    Git 的工作就是创建和保存你项目的快照及与之后的快照进行对比。
    的头像 发表于 02-10 11:32 734次阅读

    git rebase和git merge的区别

      解决冲突 git rebase和git merge的区别 分支合并 git merge是用来合并两个分支的。 比如:将 b 分支合并到当前分支。 同样git rebase b,也是
    的头像 发表于 07-05 09:54 612次阅读
    <b class='flag-5'>git</b> rebase和<b class='flag-5'>git</b> merge的区别

    Git是什么 Git介绍

    git 是什么? Git 诞生于 2005 年,是一款免费、开源、分布式版本控制系统。 直接记录快照,而非差异比较 Git 和其它版本控制系统的主要差别在于 Git 对待数据的方式。
    的头像 发表于 07-22 10:50 1745次阅读
    <b class='flag-5'>Git</b>是什么 <b class='flag-5'>Git</b>介绍

    Git命令的综合手册怎么找

    若你使用 Git 时需要获取帮助,有三种等价的方法可以找到 Git 命令的综合手册(manpage): $ git help $ git -
    的头像 发表于 07-22 11:02 623次阅读

    Git版本管理工具的使用方法

    版本管理有许多不同的方式,其中开源的Git比较受欢迎,分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。相对于使用命令来
    的头像 发表于 08-14 14:34 652次阅读
    <b class='flag-5'>Git</b>版本管理工具的使用<b class='flag-5'>方法</b>

    git基本操作命令用法

    基本用法 上面的四条命令在工作目录、暂存目录(也叫做索引)和仓库之间复制文件。 git add files把当前文件放入暂存区域。 git commit给暂存区域生成快照并提交。 git reset
    的头像 发表于 09-13 16:29 754次阅读
    <b class='flag-5'>git</b>基本<b class='flag-5'>操作</b>命令用法