Git版本工具系列之三:Git暂存区的意义

一、为什么要有暂存区,直接提交不行吗?

初学者尤其是没有工作的学生初识git思维会有些局限,不了解git真实应用场景和它应该要解决的核心问题,容易站在自己的角度和自己的思维模式下去考虑一些功能设计的意义,当然会有些费解;你需要知道版控工具它的意义,如为了更好地协同工作,更好地保存工作进度,明白一个功能它要解决的核心问题是什么;

从应用场景来理解:你现在正在开发一个功能模块,测试那里突然报了一个其它模块紧急的bug,你当前的模块还没做完肯定不能提交(当然你也可以提交,但是版控的意义就大打折扣了,我们需要每一次提交是完整的,而不是残次的;最重要的是,我们应该有更好的方式来处理),那么当你修复另一个模块的bug时,你怎么去将其提交呢?

你可能会想:我直接提交修改的某一部分不就完事了?,是的,Git也是这么想的;但是要明确一点:Git中的Commit操作它是一个原子性操作(想一想你可以在git commit时去选择提交哪些吗?),也就是它会把暂存区的文件全部提交,而且要么全部成功,要么全部失败;

那么你什么时候去选择要提交哪些文件呢?Commit操作是将暂存区的内容全部提交,所以我们要回到暂存区中思考;从工作区到暂存区,使用Git Add 文件名,我们可以选择性地向暂存区添加内容,然后将其分批提交,暂存区的意义是它将你准备提交的内容分批整体处理;

另一部分人的困惑:老大哥SVN?如果是从SVN转到Git时,可能会稍微有点不了解暂存区,那是因为SVN add和commit操作和Git add和commit操作其实是有一些差别的;SVN add只是将为进行版控的文件加入到版控,SVN commit操作则是提交现有修改,不过它在commit时可以去选择提交哪些修改;而Git是将选择操作单独封装成git add命令;

TortoiseGit?不要被TortoiseGit误解了,在使用TortoiseGit的时候,你会发现它的add命令和SVN add命令是一样的,都只是将未版控的文件加入到版控,然后在Commit时选择提交;TortoiseGit和TortoiseSVN的命令功能很相似,但是必须要明确的是Git命令本身并不是这样的,但是其最终共同的目标就是要能够选择性提交,将不同的功能模块分开提交;

参考:

知乎-为什么要先 git add 才能 git commit ?

社区问答-Git暂存区的意义在于什么

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值