我喜欢Git索引允许的细粒度提交,即在最终提交之前通过"git add"暂存单个文件甚至是hunks。不幸的是,有时候经过一些时间暂存特定的提交后,肌肉记忆会让我输入"git commit -a -m "msg""。那么我要么接受它,要么跳过一些重置或--amend hoops。
有没有一种方法可以(理想情况下是全局)配置Git,使得如果我发出"git commit -a",它会被拦截?也许是一个脚本询问我是否真的要全部提交?我考虑过将提交操作委托给包装脚本(例如 "gitcommit"),但我不认为这样做很好,因为它不能阻止我执行"git commit -a -m "msg"",这正是问题所在。
有没有一种方法可以(理想情况下是全局)配置Git,使得如果我发出"git commit -a",它会被拦截?也许是一个脚本询问我是否真的要全部提交?我考虑过将提交操作委托给包装脚本(例如 "gitcommit"),但我不认为这样做很好,因为它不能阻止我执行"git commit -a -m "msg"",这正是问题所在。
commit -a
的错误,所以从Git的角度来修复它对我来说是一个有用的改变。虽然重置可能只需要一行命令,但重新暂存一组精心计划的提交很多时候并不容易。这就是我提问的动机所在。我理解你看不到以这种方式重构Git的好处或重要性,这没问题。 - undefinedgit reset --soft
,但不幸的是,它会将通过-a
标志添加的额外文件保留在索引中。示例脚本在这里:http://pastie.org/1335618。对于我这样的手残党来说,理想的修复方法是只将 "file1.txt" 和 "file2.txt" 添加到索引中。否则,采取预防措施(例如拦截过度热情的提交)可能是一个更好的选择(对我来说)。 - undefined-a
会改变索引,如果你继续使用git reset --soft
提交,恢复操作就不会起太大作用。在这种情况下,git commit -a
可以被视为一种"不可逆的操作"(在某种程度上;至少在处理复杂提交时,可能不容易撤销)。所以是的,在这种情况下,我现在明白为什么有一个提示会是一件好事了。对不起,我刚才确实有点固执。 :) - undefined