为什么Git有工作区,暂存区和本地存储库?

时间:2016-10-31 17:34:13

标签: git

我试图理解为什么Git有很多地方可以存储更改。想象一个更简单的Git模型,它只有一个本地存储库(而不是一个单独的临时区域或工作区)。在这个模型中:

  1. 我们可以在我们希望Git跟踪的本地存储库中选择文件
  2. 我们可以通过在不同时间点拍摄存储库的快照来跟踪更改
  3. 我们可以获取对origin / master的更改并像往常一样合并
  4. 我们可以有多个分支并在它们之间切换
  5. 我们可以将更改从本地存储库推送到" origin"像往常一样
  6. 换句话说,我们可以完成Git现在所做的大部分工作,但没有工作空间,临时区域和本地存储库的概念混乱。为什么这三个都有用?

1 个答案:

答案 0 :(得分:5)

在git上写了 tomes 。也许你缺少的是工作空间和临时区域有用的具体例子。

工作树/工作树

1)你正在研究这个漂亮的想法几分钟,但它还没有为你的本地存储库做好准备。经过几分钟的修修补补后,你意识到这不是枪支工作。您可以将工作区git reset简单地放到本地存储库中。

如果您直接在本地仓库上工作,那么您可能会弄清楚您的提交历史,并且ii)必须处理回滚。

2)或者,假设您要合并两个可能存在冲突的分支。您可以git merge --no-commit,然后在暂存和提交到本地仓库之前在工作区内手动清理。

临时区域

1)您已经在工作区中修复了错误修复。然而,看一下积压,你会发现错误修复是真正在两个概念部分,解决两个不同的潜在问题。

拥有一个临时区域允许您“修复”前半部分的错误修复,并将其提交给您的本地。然后,您可以“暂存”错误修复的后半部分,并单独提交。

2)或者,以您对单个文件进行更改的示例为例。使用暂存区域,您只需将该文件的一部分(通过补丁)提交到本地存储库。所有更改都将在“工作空间”中,但只有一个子集可以“暂存”以进行提交。我经常发现自己为README和CHANGELOGs暂存部分文件。