0


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

1. 暂存区

每个 Git 仓库中,都有一个隐藏目录

.git

用于存放 Git 仓库的相关信息,包括暂存区(称为 stage)、自动创建的 master 分支以及指向 master 分支的

HEAD

指针。

每次提交文件时:

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

2. 撤销修改

因为暂存区的存在,撤销修改分为几种情况(通过

git status

查看仓库状态时会提示相关撤销修改的命令):

**git status **一般有三个状态:

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

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

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

  • 修改后,文件没有放入暂存区(即文件一直在工作区):用 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 github

本文转载自: https://blog.csdn.net/coole_true/article/details/131412464
版权归原作者 coloe_real 所有, 如有侵权,请联系我们删除。

“git 学习之暂存区撤销和修改”的评论:

还没有评论