git工作流区域

news/2025/1/15 16:15:09/文章来源:https://www.cnblogs.com/ouyangxx/p/18673273

一、主要区域

  1. 工作目录
    • 作用:本地系统中的文件夹
    • 文件状态
      • 未跟踪:文件刚添加到工作目录,还没有被Git管理(还没有git add)
      • 已跟踪:Git已经对这个文件进行过管理,Git在本地仓库中有这个文件的历史记录。
        • 未修改:该文件没有再做任何修改。
        • 已修改:修改过了,但是没有使用git add来通知Git,这个文件被修改了。
        • 已删除:删除了,但是没有使用git add来通知Git,这个文件已经被删除了。
  2. 暂存区
    • 作用:存储经过git add,但是没有git commit的文件。可以认为是缓存区域。
  3. 本地仓库
    • 作用:存储所有的提交记录、分支信息、标签等数据。
    • 提交历史:每次使用git commit,Git会将暂存区内容保存到本地仓库,并为该提交创建一个唯一的提交ID。这些提交记录形成了项目的版本历史。
    • 本地分支:可以在本地仓库中创建和切换分支
  4. 远程仓库
    • 作用:远程仓库可以托管代码。
    • 同步:远程仓库允许不同的开发者之间共享代码,并且支持推送(git push)和拉取(git pull)。

二、各个区域的交互

  1. 工作区→暂存区:
    • 对文件做出修改后,可以使用git add file,将这些修改添加到暂存区。
  2. 暂存区→工作区
    • 撤销暂存区中的文件,决定不提交git restore --staged file,相当于撤销git add
  3. 工作区→本地仓库
    • 直接提交,不先放入暂存区git commit -a,把所有【已跟踪的文件】全部提交
      • 【未跟踪的文件】不会被提交
      • 【暂存区的文件】同样会被提交
  4. 本地仓库→工作区
    • 变回之前提交的状态git reset --hard 提交版本号
  5. 暂存区→本地仓库:
    • 使用git commit -m "注释"命令将暂存区中的所有文件提交到本地仓库。
  6. 本地仓库→暂存区
    • 使用git reset --soft 提交版本号
  7. 本地仓库→远程仓库
    • 想要把本地仓库的更新推送到远程仓库时,可以使用git push
  8. 远程仓库→本地仓库
    • 使用git fetchgit pull命令将远程仓库的最新更新拉取到本地仓库。前者仅更新本地的【远程跟踪分支】,而后者会拉取远程更新并尝试自动合并。

三、案例演示

  1. 新建了一个文件a.txt,此时的状态是


    • 上图,a.txt是一个新文件,此时,就是工作目录中的【未被跟踪状态】
  2. 使用git add a.txt

    此时,文件已经被放到了暂存区。

  3. 此时,我不想跟踪这个文件了,可以使用git rm --cached a.txt


    可以看见,文件又处于工作目录的【未被跟踪】状态

  4. 然后使用git add放入暂存区,同时使用git commit -m "第一次提交",放入本地仓库中。

    此时,内容全部提交了。

  5. 然后修改了a.txt的内容,再次查看状态。

    可以看见和新建文件时的状态不一样,现在的状态是工作目录中的【已跟踪】

  6. 此时,我发现修改的内容出错了,可以使用git restore a.txt恢复到上次【已提交的状态】

    可以看见,恢复成上次提交的内容了

  7. 然后正确修改了a.txt的内容,同时git add a.txt将其加入到暂存区中(这里涉及到工作目录到暂存区的转移

  8. 此时,发现a.txt的内容少了一部分,我希望补上之后,再一起提交,此时我可以先git restore --staged a.txt,从暂存区移回到工作目录。(这里涉及到暂存区到工作目录的转移)


    可以看见,又回到了工作目录了

  9. 添加完内容之后,我希望直接提交了,不希望先到暂存区。使用git commit -a -m "第二次提交"。(这里涉及到工作目录到本地仓库的转移)。git commit -a相当于先把【已被跟踪】的文件全部放入暂存区,然后再git commit。(git commit是将暂存区转移到本地仓库)

    可以看见,全部提交了。

  10. 我突然发现,最近一次提交的部分内容有问题,希望回退到暂存区,使用git reset --soft 3d35 (这里涉及到本地仓库到暂存区的转移),后面的3d35是使用git log查找上一次提交的版本号

    可以看见,已经回到了暂存区了。

  11. 提交内容,$ git commit -m "第二次正确的提交"

  12. 突然发现,最近一次提交的内容,都有问题,要全部修改了,希望回退到第一次提交的内容。使用git reset --hard 3d35(这里涉及到本地仓库到工作目录的转移)

    注意,这和10有什么区别?假设第一次提交的内容是111,然后增加了2222和3333,同时git addgit commit,此时如果是10这种情况,文件的内容就是111和2222和3333;如果是12这种情况,文件内容就只有111了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/869668.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么说开展信创数据库势在必行

我国发展信创数据库的原因 - 保障信息安全:数据库存储着大量关键数据,如政府机密、金融交易记录、企业商业机密等。国外数据库可能存在安全漏洞或被植入后门,对国家信息安全构成威胁。发展信创数据库可实现自主可控,从根源上保障数据安全,降低安全风险。 - 减少技术依赖:…

20221320冯泰瑞《密码系统设计》第十二周

20221320冯泰瑞《密码系统设计》第十二周 学习内容Head First C 嗨翻C语言第12章 课程 mindmapAI 对学习内容的总结 要求让AI(kimi,元宝等)阅读学习内容并进行总结,教材内容可以使用微信读书或者云班课电子教材总结 《Head First C》第十二章的内容主要介绍了如何在C语言中…

20221320冯泰瑞《密码系统设计》第十一周

20221320冯泰瑞《密码系统设计》第十一周 学习内容Head First C 嗨翻C语言第11章 课程 mindmapAI 对学习内容的总结 要求让AI(kimi,元宝等)阅读学习内容并进行总结,教材内容可以使用微信读书或者云班课电子教材总结 《Head First C》第十一章的内容主要介绍了C语言中网络编…

深入理解第一范式(1NF):数据库设计中的基础与实践

title: 深入理解第一范式(1NF):数据库设计中的基础与实践 date: 2025/1/15 updated: 2025/1/15 author: cmdragon excerpt: 在关系型数据库设计中,规范化是确保数据一致性和减少冗余的重要步骤。第一范式(1NF)作为规范化的基础,要求每个表都应遵循数据的原子性及唯一性…

GaussDB技术解读——GaussDB架构介绍之集群管理层(CM)关键技术方案

GaussDB Kernel V5 集群管理层关键模块如下。图4 集群管理层组件设计图 CM 组件提供了四种服务 CM Agent, CM Server, OM Monitor, cm_ctl,与各类实例服务组件(CN, DN, GTM 等)一起构成了整个数据库集群系统。 cm_ctl 通过命令行执行集群的启动、停止、状态查询、主备倒换、…

GaussDB技术解读——GaussDB架构介绍之OM运维管理关键技术方案

​ GaussDB Kernel V5 OM运维管理关键模块如下。OM 运维主要功能有: 安装 升级 节点替换 扩容、缩容 自动告警 巡检 备份恢复、容灾 日志分析系统 在华为云的部署模式下,OM相关组件部署示意图如下: 图7 华为云OM运维管理 用户登录华为云Console,访问GaussDB Kernel V5的管控…

通义发布语音模型 MinMo:全双工、多口音;MiniCPM-o :端侧 GPT-4o 级视觉、语音、多模态实时流式大模型

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文章 」、「有看点的 会议 」,但内容仅代表编辑…

部署 Browser-Use WebUI + DeepSeek 实现浏览器AI自动化

一、安装部署 1.安装 python3.11 或以上版本2.安装browser-use pip install browser-use3.安装 Playwright playwright install4.安装项目依赖 pip install langchain-google-genai==2.0.8 pip install pyperclip==1.9.0 pip install gradio==5.9.1 pip install langchain-olla…

Day_01

学习MarkDownMarkDown学习 标题: 二级标题 三级标题 字体 hello world hello world hello world hello world hello world 引用选择狂神说Java,走向人生巅峰分割线图片超链接 点击跳转到B站 列表A B CA B C表格名字 性别 生日张三 男 2000.1.4代码 public static

高效团队如何选择问题管理工具?六款推荐与理由

1. 板栗看板(Banli Kanban) 推荐理由: 板栗看板是由重庆赛迪信息公司研发的在线协同文档编辑与项目管理工具,专为中国企业的团队协作需求量身打造。核心功能:板栗看板集任务管理、实时协作编辑、进度追踪于一体,通过简洁直观的界面帮助团队掌握开发节奏。适用场景:适合中…

任务分配与信息共享:跨职能团队协作的利器

一、跨职能团队协作的挑战 沟通障碍与信息不对称 跨职能团队通常由来自不同部门的成员组成,各个部门之间存在语言、目标和工作方式上的差异。例如,研发团队更加注重技术细节和功能实现,而市场和销售团队则关注产品的市场定位、推广策略和客户需求。这种背景差异往往会导致沟…

告别付费拍证件照!NAS 基于Docker部署免费证件照生成工具

你在生活中有没有遇到过急需证件照的场景?在某些考试前发现证件照还没准备好;求职面试时,也需要附上职业证件照,生活中还有很多需要证件照的场景。 本文章利用NAS基于Docker部署一款证件照自动生成的工具—HivisionIDPhotos。 利用‌HivisionIDPhotos‌,通过一张生活照片,…