Git文件修改,撤销修改,删除

本文深入讲解Git版本控制系统的使用,包括工作区、暂存区、版本库的概念,以及如何通过git add和git commit命令进行文件修改的管理和提交。同时,探讨了如何撤销修改、删除文件及版本回退等高级操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

参考廖老师教程

Git和其他版本控制系统比如SVN的一个不同之处就是有暂存区的概念。

工作区

在电脑里能看到的目录,比如我的仓库 flask_case 文件夹就是一个工作区:

版本库

工作区有一个隐藏的目录 .git ,这不能算是一个工作区,因为它是隐藏的,它是Git的版本库。

Git的版本库里存了很多的东西,其中最重要的是index(或者叫stage)的暂存区,还有Git为我们自动创建的第一个分支master(我们创建的那个仓库文件夹就是),以及指向master的一个指针叫HEAD

 

 

 

 

 

 

 

 

 

 

我们将文件往Git版本库里添加的时候,是分两步执行的:

第一步:使用 git add命令将文件添加进去,这里实际是将文件修改添加到暂存区;

第二步:使用git commit提交修改,实际就是将暂存区的所有内容提交到当前分支;

因为我们创建Git版本库时,Git自动为我们创建了唯一一个 master 分支,所以 git commit 就是往master分支上提交修改。

也就是说,需要提交的文件修改通通在暂存区呆着,然后git commit 一次性提交暂存区的所有修改。

这里先对 readme.txt做个修改,然后再到工作区中新增一个test文件,最后用git status查看下状态:

Git提示,readme.txt被修改了,而test从来没有被添加过,所有状态为Untracked。

现在需要执行git add 将readme.txt和test添加到暂存区里面,然后在git status查看如下,

现在,暂存区的状态就变成下面重要的状态了:

所有,git add 命令实际就是把要提交的所有修改放到了暂存区中,,然后执行git commit 就可以一次性把暂存区的所有修改提交到分支。

提交后,如果没有戳工作区再做修改,那么工作区就是"干净的":

此时提交后的版本库就变成了如下状态,而暂存区就没有任何内容了:


管理修改

Git比其他版本控制系统优秀的地方就在于Git跟踪并管理的是修改,而非文件。

举例说明如下,首先我们对readme.txt文件做一个修改,这里我随便添加了些内容;

然后添加到暂存区,查看状态;

然后再修改readme.txt

然后我开始提交:

我再查看git的状态,这里感觉好像落下了什么。。。



还有修改没有提交?,我们回顾下刚刚的操作:  第一次修改-> git add ->第二次修改-> git commit

在前面有讲到,Git管理的是修改,当你使用git add 命令后,工作区的第一次修改被放到了暂存区,准备提交,但是,我们后面又进行了第二次修改,这次的修改没有放到暂存区中,所以,git commit 只负责把暂存区的修改提交了,也就是第一次修改被提交了,但是,第二次的修改没有放到暂存区中,所以没有被提交。

提交后,使用 git diff HEAD -- readme.txt 命令查看工作区和版本库里面最新版本的区别:

怎么提交第二次的修改呢,继续使用 git add 然后再 git commit就可以。

小结:在Git中每次修改,如果不用git add到暂存区,那就不会加入到commit中()


撤销修改

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作(git checkout -- file)。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,那就需要版本回退了,不过前提是没有推送到远程库。

撤销操作比较简单,操作的时候,查看git状态,里面会有对应的提示。。。


删除文件

在Git中,删除也是一个修改的操作,这里我们先添加一个test1.txt文件,并且提交到Git;

一般情况下,我们会直接在文件夹中将没用的文件删除,或者使用 rm 命令删除:

这个时候,Git是知道你删除了文件,因为工作区和版本库不一样了,使用git status可以查看被删除的是哪些文件;现在有两个选择:确定要从版本库中删除该文件,使用 git rm 删除,然后 git commit 提交你做的事情。

这样,文件就从版本库中删除了。就两步 git rm file --> git commit 

(小提示:先手动删除文件,然后使用git rm <file>和git add<file>效果是一样的。)

如果不小心删错了文件,版本库里还有这个文件,所以可以命令 git checkout -- file 很轻松地把误删的文件恢复到最新版本:

git checkout 其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以还原

注意

1,如果你用rm删除的文件,就相当于只删除了工作区的文件,如果需要恢复,直接使用 git chekout -- file就可以:

2,如果你用的是git rm删除文件,那就相当于不仅删除了文件,而且还添加到了暂存区,需要先 git reset HEAD <file>,然后再git checkout -- <file>,如下图操作所示

 

<think>好的,用户想了解如何处理Git文件修改的相关操作,特别是如何提交修改内容。首先,我需要整理Git的基本文件修改流程,确保覆盖添加修改到暂存区、提交、查看状态等步骤。然后,根据用户提供的引用资料,可能需要包括如何修改提交历史中的信息,比如日期或提交消息,以及处理提交后的常见问题,比如漏掉文件或者需要修改最后一次提交。 用户提供的引用中有提到git add、git commit、git pull、git push等命令,还有修改提交日期和内容的工具,比如git-change-date。这些内容需要整合到操作指南中,确保用户不仅能提交修改,还能处理一些特殊情况。比如引用[5]提到修改最后一次提交,这可能涉及git commit --amend的使用,需要详细说明步骤。 另外,用户可能遇到的问题比如提交冲突或权限错误,引用[2]中提到了push失败的情况,可以放在常见问题部分。同时,修改历史提交信息的需求,引用[3]和[4]提到的工具和方法,可能需要分步骤解释,但要注意提醒用户谨慎操作,因为修改历史会影响协作。 需要确保回答结构清晰,分步骤讲解,每个命令给出示例,并引用相关参考资料。同时生成相关问题,帮助用户进一步学习,比如如何撤销修改、处理冲突、修改提交历史等。最后,检查所有LaTeX格式是否正确,行内公式用$...$,独立公式用$$...$$,但这里可能用不上太多数学公式,主要关注Git命令的正确展示。</think>### Git文件修改操作指南 #### 一、基础操作流程 1. **查看文件状态** 使用 `git status` 查看工作区与暂存区的文件状态,红色表示未跟踪/未暂存,绿色表示已暂存。 ```bash git status ``` 2. **将修改添加到暂存区** - 添加单个文件: ```bash git add filename.txt ``` - 添加所有修改(含新增、删除): ```bash git add . ``` > 引用[1]和[2]中均提到 `git add` 是将修改从工作区移动到暂存区的关键步骤[^1][^2]。 3. **提交修改到本地仓库** 使用 `git commit` 提交暂存区的修改,并附加说明: ```bash git commit -m "描述本次修改的内容" ``` 4. **推送修改到远程仓库** ```bash git push origin branch_name ``` > 若推送失败(如权限问题),需检查SSH密钥或远程仓库配置[^2]。 --- #### 二、修改已提交的内容 1. **修改最后一次提交** - 添加漏掉的文件修改提交说明: ```bash git add missed_file.txt git commit --amend -m "新的提交说明" ``` > 此操作会覆盖最后一次提交记录[^5]。 2. **修改历史提交信息(如日期、内容)** - 使用工具 `git-change-date` 修改提交日期: ```bash git-change-date ``` - 手动修改历史提交(需 `rebase` 操作): ```bash git rebase -i HEAD~3 # 修改最近3次提交 ``` > 引用[3]和[4]提供了修改历史提交时间和内容的方法[^3][^4]。 --- #### 三、常见问题处理 1. **撤销工作区修改** ```bash git checkout -- filename.txt # 放弃单个文件修改 git restore . # 放弃所有未暂存的修改 ``` 2. **撤回已暂存的修改** ```bash git reset HEAD filename.txt # 从暂存区移出单个文件 ``` 3. **解决推送冲突** 先拉取远程最新代码,合并冲突后再推送: ```bash git pull origin branch_name # 手动解决冲突后重新提交 git add . git commit -m "解决合并冲突" git push origin branch_name ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值