git 学习之暂存区撤销和修改

Git仓库中的暂存区用于临时存储改动,gitadd将文件添加到暂存区,gitcommit提交到分支。撤销修改分为针对暂存区和工作区的不同情况,gitstatus显示修改状态,gitcheckout和gitreset用于撤销工作区和暂存区的改动。gitcheckout既可以切换分支,也可恢复文件,而gitrestore和gitreset是现代Git中的替代操作。
摘要由CSDN通过智能技术生成

1. 暂存区

每个 Git 仓库中,都有一个隐藏目录 .git 用于存放 Git 仓库的相关信息,包括暂存区(称为 stage)、自动创建的 master 分支以及指向 master 分支的 HEAD 指针。

每次提交文件时:

  • git add 添加文件到暂存区。
  • git commit 提交更改,把暂存区的所有内容一次性全部提交到当前分支,清空暂存区。

2. 撤销修改

因为暂存区的存在,撤销修改分为几种情况(通过 git status 查看仓库状态时会提示相关撤销修改的命令):

git status 一般有三个状态:

changes to be committed -- 表示,已经提交到暂存区的文件,一般是 untracked files 根据 git add 提交上来的文件

changes not staged for commit -- 表示,即在工作区又在暂存区的文件,且文件在工作区被修改,还没有提交到暂存区

untracked files -- 表示,只在工作区,没有提交到暂存区的文件,不受版本控制,需要git add 提交到暂存区,之后为 changes to be committed 状态。

changes not staged for commit 和 untracked files 都是工作区修改,不同的是

changes not staged for commit  工作区对git版本库已存在的文件的修改

untracked files 工作区对git版本库未存在的文件(不收版本库控制)的修改(添加)

  • 修改后,文件没有放入暂存区(即文件一直在工作区):用 git checkout -- 文件名 撤销工作区的改动(回到跟版本库一样的状态,即回到最近一次 git commit时的状态,所有改动全部清除)
  • 修改后,文件放入暂存区,且文件没有再次修改(即文件已经进入暂存区):分两步:先用 git reset <文件名> 撤销 git add 操作(此时更改仍留在工作区),再执行 git checkout -- 文件名 清除工作区的改动
  • 修改后,文件放入暂存区,且文件再次修改:分三步:先用 git checkout -- 文件名 撤销工作区的改动,再用 git reset <文件名> 撤销 git add 操作(此时更改仍留在工作区),最后执行 git checkout -- 文件名 清除工作区的改动

通过 git checkout -- 文件名 命令可以撤销文件在工作区的修改。
通过 git reset 文件名 命令可以撤销指定文件的 git add 操作,即这个文件在暂存区的修改。
通过 git reset 命令可以撤销之前的所有 git add 操作,即在暂存区的修改。

git checkout -- 文件名 命令中的 -- 表示命令行在 -- 之后没有更多的选项。这样的好处是,如果碰巧有一个分支与文件名重名,仍然可以恢复该文件,而不是切换到同名的分支。

扩展一下:git checkout 不仅可以对分支切换创建做操作,也能对文件恢复做操作,

对分支切换创建做操作,可以用 git switch 替代

也能对文件恢复做操作,可以用git reset和git resotre 等作为替代

git checkout 操作是git早期版本的用法

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通过使用git reset命令可以撤销暂存修改。如果文件在工作区被修改但没有被放入暂存区,可以使用git checkout -- 文件名命令来撤销工作区的改动,将文件恢复到最近一次提交时的状态。如果文件已经放入暂存区但没有再次修改,可以先使用git reset 文件名命令撤销git add操作,然后再使用git checkout -- 文件名命令清除工作区的改动。如果文件已经放入暂存区并且再次修改,可以先使用git checkout -- 文件名命令撤销工作区的改动,然后再使用git reset 文件名命令撤销git add操作,最后再次使用git checkout -- 文件名命令清除工作区的改动。需要注意的是,如果对文件执行过git commit或者git add操作,上述命令将无法达到撤销修改的目的。在这种情况下,可以通过重新拉取代码并替换本地文件的方式来重置本地代码。具体步骤包括在其他文件夹里重新拉取代码,删除本地的文件,然后将原来拉取到的代码复制过来。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [git 学习暂存区撤销修改](https://blog.csdn.net/coole_true/article/details/131412464)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Git基本操作之 修改提交信息 取消暂存文件 撤销文件修改](https://blog.csdn.net/int_t/article/details/127248325)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值