真正的git staging area
是什么?
我以前只和unstaged files
一起工作,当我认为一切都很好时,我会将它们暂存以构建提交。
尽管如此,我认为这有一个很好的理由,但我无法得到它可以帮助我的工作流程。
有什么想法吗?
答案 0 :(得分:2)
Git阶段的一个有用的目的是它可以作为一个可以保存你想要提交的工作的地方,使工作目录仍然可用。最好通过一个例子来解释。假设您已完成某项功能,并且您已完成所有测试和自己的代码审核。现在可以提交此工作,因此您git add
更改了所有文件。这填补了这些文件的阶段,此时工作目录和阶段都是同步的。
但现在假设你在最后一分钟意识到你需要做一个小小的改变。或者,您将获得最后一分钟的灵感,以便为该功能添加其他内容。功能本身基本上是完整的,所以你不想改变你已经完成的好工作。由于您的工作位于暂存区域,因此您可以根据需要修改工作目录。如果您希望保留任何新作品,可以再次git add
。否则,你可以按原样保持舞台,进行提交,然后推动你的工作。
顺便说一下,如果您想将工作目录文件重置为阶段中的版本,可以通过git checkout FILE
完成。
请注意,许多Git插件(例如eGit for Eclipse)似乎都会跳过舞台,通常看起来直接从工作目录文件提交。
答案 1 :(得分:2)
程序员很难只改变应该成为下一次提交的一部分的东西。这就是临时区域有很大帮助的地方 - 你选择了正确的位,忽略了各种日志/调试语句或无关的更改,然后才提交。这样,您可以从一批更改中创建几个干净的提交。
答案 2 :(得分:2)
您可以选择要包含在提交中的内容,而不仅仅是文件,还可以选择字符粒度。
假设您正在寻找一个错误,并在整个地方添加了大量临时调试语句。现在你已经解决了一些问题,并希望提交修复,但怀疑可能还有更多,所以你仍然需要调试语句。因此,您启动git gui
并使用差异上下文菜单中的Stage hunk
/ Stage line
条目来仅修复修复,然后提交它。您可以从git add -i
获得相同的效果,或者您可以使用git add -e
编辑差异以进行舞台演出,或者您可以使用类似vim-fugitive的内容调整舞台。
有时您也会使用舞台来分隔挂起的更改。假设你正在做某事,做了一些部分,但现在你需要进行一些实验。因此,您可以放置自信的部分,或者您认为可能需要返回的部分,并继续进行实验,然后如果事实证明不是您想要的地方,您可以轻松撤消实验。