首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Intercept "git commit -a(m)“

Intercept "git commit -a(m)“
EN

Stack Overflow用户
提问于 2010-11-30 07:34:08
回答 2查看 678关注 0票数 2

我喜欢git索引允许的细粒度提交,即在最终提交之前通过git add暂存单个文件甚至块。不幸的是,有时在花了一些时间准备一个特定的提交之后,肌肉记忆就开始起作用了,所以我git commit -a -m "msg"了。然后我要么不得不接受它,要么跳过一些reset--amend的圈套。

有没有办法让我(理想情况下是全局的)配置Git,这样如果我发出一个git commit -a,它就会被拦截?也许是一个脚本,要求我确认是否真的要提交所有内容?我考虑过将提交操作委托给包装器脚本(例如,"gitcommit"),但不要认为这会很好地工作,因为它不会阻止我执行git commit -a -m "msg",这首先就是问题所在。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-30 08:14:13

试试pre-commit hooks

类似这样的东西(未测试)

.git/hooks/pre-commit

代码语言:javascript
复制
#!/bin/sh
git diff-files --quiet    # check if the working directory have non-staged files
DIRTY_WORKING=$?

if [ ! $DIRTY_WORKING ] ; then        #  check if we are committing all files
   # list all files to be committed
   git diff-index --name-status --cached HEAD

   echo "Are you sure? (type YES to continue)"
   read VALUE
   [ "x$VALUE" != "xYES" ]
   exit $?
fi
exit 0

您可以使用git diff-index --cached HEAD | wc -l来查看要提交的文件数。但我想我会把这个留给你自己。

票数 5
EN

Stack Overflow用户

发布于 2010-11-30 07:48:21

一种方法是使git成为一个别名,它运行您创建的脚本,该脚本查看命令行参数,并让您知道是否在命令行上输入了commit-a

就我个人而言,我从不使用commit -a,而总是使用git add -ugit commit

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4309181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档