【发布时间】:2019-06-16 11:35:28
【问题描述】:
想象一下这样的场景:您正在开发一个需要接触大量文件的功能,并且您有很多东西已经暂存,还有很多东西没有暂存(比如调试代码、临时 cmets 让您自己记住)做/撤消某些事情,不要忘记添加你还没有时间添加的位),然后你会看到一个你必须做的简单的单行更改,但它属于它自己的提交。
有没有什么方法可以简单地提交它,而无需将所有内容从您精心添加的暂存区域中拉出,无需隐藏(并冒着失去您对要暂存和不暂存的仔细选择的风险)并且只是提交那一行?
我意识到摆弄multiple staging areas 可能会使这成为可能,但我希望有比这更简单的解决方案。一些让我跳过暂存区域的开关比使用GIT_INDEX_FILE 拥有两个更方便。
我理想的解决方案是这样的:
git commit --skip-stage --patch ./app/models/whatever.rb
如果这是不可能,那么当我将其弹出时,我将简单地隐藏并使用--index,并希望我没有意外地在隐藏和弹出之间做了一些破坏干净能力的事情恢复索引。
因为我知道有人会想“如果你知道 --index 和 git stash pop,你为什么要问这个问题?因为它既是关于推动我可以用 Git 做的事情,也是为了解决问题一个实际的问题。仅仅因为一个问题的解决方案存在并不意味着它是最好的解决方案,或者人们应该停止寻找替代方案。这适用于所有生活,而不仅仅是 Git。
【问题讨论】:
-
您不想“跳过”暂存区域 - 本身 - 索引包含 HEAD 的当前状态以及任何暂存阶段。因此,跳过暂存区并创建提交(不更新索引中的这些更改)意味着您实际上会在完成提交后立即分阶段删除刚刚提交的更改。 (但这是对术语的一个小抱怨;我理解你在问什么,这是一个很好的问题。)
标签: git git-commit