在 git 推送之前执行命令?

Execute a command before a git push?

每次我 git push 我有一个大于 100MB 的文件,所以我想知道,如何在每个 git push 命令之前添加这个命令 find . -type f -size +100M -exec ls -sh {} \;

我无法在别名中执行此操作,因为 gitpush 是 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 的打包文件会阻止您的操作,
  • 它还会查看 gitignored 个文件

所以根据你想要实现的目标,你可能需要写一个更有针对性的脚本。

如果您在处理大文件时遇到问题,您可能想使用 git lfs,正如@Schwern 在他的评论中所建议的那样。

如果您需要有关如何处理您的用例的更多详细信息,请编辑您的问题(或提出新问题)以提供有关您的用例的更多信息。