我正在学习git,并且注意到它有一个两步提交过程:
git add <files>
git commit
第一步将修改放入所谓的“分阶段区域”或“索引”。
我感兴趣的是为什么做出这个设计决策,以及它的好处是什么?
而且,作为git用户,您是这样做的还是只使用git commit -a
?
我问这个问题,因为我来自bzr (Bazaar),它没有这个特性。
发布于 2011-04-18 01:38:46
将工作拆分为单独的提交。您可能已经多次打开一个文件来编写单行修复程序,但同时发现格式错误,一些文档可以改进,或者其他一些无关的修复。与其他RCSs一起,您将不得不将其写下来或提交到内存中,完成所需的修复,提交,然后返回修复其他内容(或者创建一个不相关的提交)。使用Git,您只需一次性修复所有这些,并分别使用stage+commit或git add -i
或git-gui
对单行进行修复。
不要破坏建筑。你在做一个复杂的修改。所以你尝试不同的事情,其中一些比另一些更好,有些则破坏事物。使用Git,当修改使事情变得更好的时候,你就会把事情做好,而当修改不起作用时,就会出现checkout
(或更多的修改)。您不需要依赖编辑器的撤销功能,您可以checkout
整个回购,而不仅仅是逐个文件,任何文件级别的错误(比如删除未提交的文件或在错误修改后的saving+closing )都不会导致大量工作的丢失。
发布于 2011-04-18 01:13:13
对我来说,其中一个好处是能够逐步“添加”文件。在提交之前,我检查每个文件。一旦文件被审查,我就添加它。当我使用git status
或git diff
时,git只显示已经修改且尚未添加的文件。当我查看了所有的文件并添加了它们之后,我就可以提交了。
所以是的,我觉得集结地很有帮助。
不,我从不使用git commit -a
。但是,我经常使用git add -u
。这样,我仍然可以想象将要发生的事情。
发布于 2011-04-18 08:14:48
好处很简单:它让您完全控制何时提交哪些文件。因此,您可以使用git add -p
来控制要提交的行。
https://softwareengineering.stackexchange.com/questions/69178
复制相似问题