根据习惯,我经常在回购中进行更改,并使用git commit -am 'my commit message'一次性添加/提交它。
有时,我只想添加几个修改过的文件,所以我将发出准备好的git add命令来精心设置我的暂存区域,并将准备提交的更改与半生不熟的更改分开。
然后,我将发出与通常相同的git commit -am '...'命令,从而增加整个过程。
是否有一种方法可以禁用git commit -a选项和/或在使用-a开关时发出警告?我想训练自己摆脱这种简陋的习惯.
发布于 2014-06-20 01:55:25
创建一个名为git的包装脚本,它将捕获错误的命令,并将好的命令转发给真正的git。把它放在你的$PATH前面
#!/bin/bash
for ARG in "${@}"; do
if [ "${ARG}" = "-am" ]; then
echo "Hey! Don’t do that!" 1>&2
exit 1
fi
done
exec /usr/bin/git "${@}"几乎所有的git命令都能正常工作:
$ git pull
remote: Counting objects: 1183, done.
remote: Compressing objects: 100% (728/728), done.
remote: Total 1183 (delta 771), reused 632 (delta 455)
Receiving objects: 100% (1183/1183), 1.12 MiB | 1.46 MiB/s, done.
...但那些你不想工作的人不会:
$ git commit -am "foo"
Hey! Don’t do that!发布于 2014-06-19 22:28:13
我不知道 setting会防止/不允许git commit的--all/-a选项。
你可以考虑一下:
hooks--pre-commit.sample):
git存储保存-q --保留索引“可能提交am”(-q表示“安静”)
这将从工作树中删除您的任何修改(除了已经添加到索引中的修改)。
post-commit钩
如果[$[$( git stash list区)\x\ grep " stash @{0}“\\x grep”可能提交am")“!=”],则git藏弹-q fi。这应该允许您在不提交所有内容的情况下键入git commit -[a]m "a commit message"。
如果您想跳过这些钩子一次提交:
git commit --no-verify -m "a commit message"发布于 2018-04-04 18:50:22
这是鱼壳特有的,所以它不会对每个人都有用.但可能对某些人来说!
function git
if string match 'commit' $argv[1] > /dev/null
set has_am 0
for arg in $argv
if string match -r -- '^-am.*' $arg > /dev/null
set has_am 1
end
end
if test $has_am -eq 1
echo -e "Commit All detected.\nDon't do this!"
else
command git $argv
end
else
command git $argv
end
endhttps://stackoverflow.com/questions/24317038
复制相似问题