在 git 推送之前执行命令?
Execute a command before a git push?
每次我 git push
我有一个大于 100MB 的文件,所以我想知道,如何在每个 git push
命令之前添加这个命令 find . -type f -size +100M -exec ls -sh {} \;
?
我无法在别名中执行此操作,因为 git
和 push
是 2 个独立的字符串,即使我为 push
、[=15= 创建了别名] 如果我执行 git push
.
将不会被识别为别名
如果我在脚本中这样做,这也是一样的,我不能用空白调用我的脚本“git push”吧?
因为 shell
中的 ' ' = '\'
有人知道吗?
就“执行脚本”而言,您可以:
- 创建一个 git 别名:
# one hacky way to turn your command in a (bad) one liner :
git config alias.pushcheck '! find . -type f -size +100M -exec ls -sh {} \; | grep . && echo "*** Large files detected, rejecting push" || git push'
- 创建一个
git-pushcheck
脚本,并将其放在您的 PATH
、
然后你可以像使用新的 git pushcheck
子命令一样使用它
- 对于
push
具体的操作,可以写一个pre-push
钩子
至于你的行为背后的逻辑:
find
也会查看您的 .git/
本地目录,因此恰好大于 100M 的打包文件会阻止您的操作,
- 它还会查看
gitignore
d 个文件
所以根据你想要实现的目标,你可能需要写一个更有针对性的脚本。
如果您在处理大文件时遇到问题,您可能想使用 git lfs
,正如@Schwern 在他的评论中所建议的那样。
如果您需要有关如何处理您的用例的更多详细信息,请编辑您的问题(或提出新问题)以提供有关您的用例的更多信息。
每次我 git push
我有一个大于 100MB 的文件,所以我想知道,如何在每个 git push
命令之前添加这个命令 find . -type f -size +100M -exec ls -sh {} \;
?
我无法在别名中执行此操作,因为 git
和 push
是 2 个独立的字符串,即使我为 push
、[=15= 创建了别名] 如果我执行 git push
.
如果我在脚本中这样做,这也是一样的,我不能用空白调用我的脚本“git push”吧? 因为 shell
中的 ' ' = '\'有人知道吗?
就“执行脚本”而言,您可以:
- 创建一个 git 别名:
# one hacky way to turn your command in a (bad) one liner :
git config alias.pushcheck '! find . -type f -size +100M -exec ls -sh {} \; | grep . && echo "*** Large files detected, rejecting push" || git push'
- 创建一个
git-pushcheck
脚本,并将其放在您的PATH
、
然后你可以像使用新的git pushcheck
子命令一样使用它 - 对于
push
具体的操作,可以写一个pre-push
钩子
至于你的行为背后的逻辑:
find
也会查看您的.git/
本地目录,因此恰好大于 100M 的打包文件会阻止您的操作,- 它还会查看
gitignore
d 个文件
所以根据你想要实现的目标,你可能需要写一个更有针对性的脚本。
如果您在处理大文件时遇到问题,您可能想使用 git lfs
,正如@Schwern 在他的评论中所建议的那样。
如果您需要有关如何处理您的用例的更多详细信息,请编辑您的问题(或提出新问题)以提供有关您的用例的更多信息。