git文件的四种状态和git的四个工作区域

Git文件有Untracked、Unmodify、Modified和Staged四种状态。Untracked表示未加入版本控制,Unmodify表示未修改,Modified表示已修改但未暂存,Staged表示已暂存准备提交。Git的工作区和暂存区管理文件状态,add操作用于将修改加入暂存区,commit则将暂存区内容提交到本地仓库。此外,还介绍了如何处理删除和恢复文件的指令。

Git中文件的4种状态Untracked、Unmodify、Modified、Staged - 嘿十三 - 博客园git 学习资料推荐廖雪峰https://www.liaoxuefeng.com/wiki/896043488029600 git库所在的文件夹中的文件大致有4种状态 Untracked: 未跟踪, https://www.cnblogs.com/thirteen-yang/p/13878118.htmlgit文件的四种状态

git库所在的文件夹中的文件大致有四种状态:

Untracked:未跟踪,此文件在文件夹中,但没有加入到git库,不参与版本控制。 通过git add 状态变为Staged。

Unmodify:文件已入库,未修改。即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件。

Modified:文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改。

Staged:暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified

git四个工作区域

没有被git add过的修改记录全部在workspace(工作区),所有已经被git add的记录全部在Index(暂存区),已经commit过的都以各个版本的形式存在于Repository版本库。
        已经被tracked的文件发生的更改也是需要每次进行add,这样才会将到此为止的修改放入stage区。也就是说add本质上是两个作用:add新文件、add更改。

新建文件--->Untracked
使用add命令将新建的文件加入到暂存区--->Staged
使用commit命令将暂存区的文件提交到本地仓库--->Unmodified
如果对Unmodified状态的文件进行修改---> modified
如果对Unmodified状态的文件进行remove操作--->Untracked

工作区和暂存区的一些删除与恢复指令

  1. 丢弃workspace、INdex区所有改动,回滚到之前的版本库中的状态
    git reset
    
  2. 回滚到旧版本后,要切换到更新的版本时,目标版本的commit_id:

    git reflog
    
  3. 丢弃某个文件在working区发生的改变

    git checkout -- filename
  4. 把某个已经add到stage区的文件清除

    git reset HEAD filename
  5. 恢复误rm某个working区文件(注意该文件必须之前存在于版本仓库)且本次删除还未commit,怎么检出恢复

    git checkout -- filename
    
  6. 恢复误rm某个working区文件(注意该文件必须之前存在于版本仓库),但本次rm已经commit

    git reset HEAD filename
    git checkout -- filename

          这里reset将文件变成untracked的文件,再checkout恢复working区到版本库最后一个版本

### Git 四个工作区的详细介绍及区别 #### 1. **工作区 (Working Directory)** 工作区是指开发者实际操作修改代码的地方,它是项目的物理目录结构所在位置。每次克隆或检出一个分支时,都会在本地创建对应的工作区副本[^3]。 - **特点**: 这里的文件可以直接编辑,是最接近用户的部分。 - **作用**: 开发者可以在这一区域自由更改、新增或者删除文件。 #### 2. **暂存区 (Staging Area / Index)** 暂存区是一个特殊的存储空间,位于内存中,用来记录即将被提交到仓库的内容变化。它实际上是一个文件,包含了准备提交到版本库中的文件列表信息[^2]。 - **特点**: 它起到了缓冲的作用,允许用户选择哪些变更要进入下一次提交,而不需要一次性全部提交所有的改动。 - **作用**: 将工作区的部分更新先放到这里排队等待最终确认后再正式加入历史记录。 #### 3. **本地仓库 (Local Repository)** 这是由 Git 维护的一个数据库,保存着每一次提交的历史快照以及元数据。每一个成功的 `git commit` 命令会把当前状态永久性地写入此区域内,并通过指针(如 HEAD)标记最近的一次提交。 - **特点**: 数据安全性高;一旦某项内容成功入库,则几乎不可能丢失除非人为破坏整个 .git 文件夹。 - **作用**: 提供了一个可靠的时间机器功能——能够随时回溯查看任意时刻的状态。 #### 4. **远程仓库 (Remote Repository)** 通常部署在一个网络可访问的服务端上(比如 GitHub, Gitee),作为团队协作共享资源的核心节点存在。任何推送(`push`)动作都是为了同步本地已完成的任务至云端以便其他成员获取最新进展;相反拉取(`pull/fetch`)则是下载别人贡献的新成果回来合并进自己的环境中。 - **特点**: 支持多人合作模式下的高效沟通机制。 - **作用**: 实现跨地域分布式开发环境下的无缝衔接体验。 ```bash # 示例命令展示如何交互于上述各个阶段之间 $ git add file.txt # 把file.txt从工作区移动到暂存区 $ git status # 查看不同区域间差异情况 $ git commit -m "msg" # 正式将暂存区内变动打包成新版本送入本地库 $ git push origin main # 同步本地库的变化给远端服务器上的main分支 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值