Git的索引概念如何改善或改变您的工作流程?

时间:2010-02-19 02:08:29

标签: git workflow dvcs

我一直在尝试将Git用于个人项目近一个月。

我非常了解基本的命令集,虽然它的用户体验并不令人敬畏,但我仍然觉得自己比过去使用的其他VCS更喜欢Git。

然而,我仍然认为我没有“得到”的一个概念是指数的真正目的。我有这种感觉,我没有利用它打算给予的一些好处。

有一个临时区域的目的是什么?来自SVN的土地,我已经习惯将我的工作副本视为我的临时区域,我的快照也是从我的提交中获取的。

所以,我的问题是:

这种额外的间接水平给你带来了什么?指数如何改善或改变您的正常工作流程?你能否提供任何让索引允许你做一些在没有它的情况下会遇到麻烦的事情?

3 个答案:

答案 0 :(得分:6)

我肯定会开始处理某个功能或错误修复,然后注意一个简短的拼写错误或其他一些小的(也许是一行)修复的东西。我可以通过索引提交那个微小的变化,而不是放弃我的所有工作,甚至不使用git stash。我的所有其他工作仍然存在,但现在提交更具体:它只显示小修复,而不是埋没在其他几十行中。这是为了更清晰的历史记录,这使得搜索日志变得容易,因为它们没有与其他提交混合使用。

如果发生(复杂的,大的)合并冲突,能够添加我对索引所做的每个更改也很好,所以我知道我修复了哪些冲突以及需要处理哪些冲突。< / p>

答案 1 :(得分:3)

就个人而言,我目前正在经历一次大规模的合并冲突,我不得不逐一修复这些项目。在这种情况下,我可以对我合并的文件执行'git add',并且仍然单独跟踪我需要修复的文件。

一旦我完成了这一点,我就可以执行测试编译,然后在我提交存储库之前重新添加所需的任何其他更改。

答案 2 :(得分:1)

有时候我会做一个'git cherry-pick -n'或'git merge --squash'从外国分支机构中获取一系列更改然后我将取消所有这些更改并使用git interactive add( git add -i)只播放我想要的部分。你甚至可以选择差异的“帅哥”并将其余部分保持在一个改变的状态(非常适合去解决那些应该单独提交的东西)。

当你编辑一大堆文件时也很棒,但你决定在进一步提交之前你真的应该把所有与X相关的文件作为单个提交提交,所以你只需要进行分段,提交并继续工作其他文件。

我也喜欢暂存区域与合并一起工作的方式,以向您显示未自动暂存的内容。当然,索引区域并不是严格必要的,但我发现diff的默认行为显示只有非索引项目的差异才有用,所以除非你使用diff,否则你不会看到阶段的东西 - -cached。