Git - 以编程方式阻止提交或推送的能力

标签 git push commit git-commit git-push

我的用例:
我有一个项目,我必须添加一行代码才能在我的机器上运行。在提交和推送之前,我必须再次删除这行代码。
我经常忘记这一点,所以我想知道是否可以编写一个工具来“提高标志”,这会阻止我提交或推送提交,直到我再次“删除”该标志。
有没有办法创建某种锁定文件或设置一个设置,以便 git bash 拒绝我的提交/推送?

最佳答案

您可以通过在 .git/hook/pre-commit 中放置具有执行权限的文件来创建预提交 Hook 。 .
该脚本可以检查该行是否存在,如果存在,则返回非零退出代码并因此中止提交:

#!/bin/sh

if grep -q '^Line to remove$' myfile.txt; then
  echo 'You forgot to remove the line from myfile.txt'
  exit 1
fi
您可以通过将文件放在 .git/hook/pre-push 中类似地在 pre-push Hook 中执行此操作。 .
您也可以让钩子(Hook)强行删除此行,然后添加 git add这个文件,虽然我个人不喜欢钩子(Hook)自动暂存我不打算的文件。

关于Git - 以编程方式阻止提交或推送的能力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65124470/

相关文章:

javascript - 我如何简单地从一个数组中取出一个属性并将其放入另一个数组中? Javascript

git - 如何在 Git 上应用旧提交?

hash - Docker如何计算每一层的hash?它是确定性的吗?

git - 如何 git svn 只获取具有特定模式的分支/标签?

android - 如何解决 "fatal: ambiguous argument ' HEAD~ 1': unknown revision or path not in the working tree"?

Git 克隆错误的仓库

git - 源代码树 - 删除、丢弃、忽略之间有什么区别?

mercurial - 乌龟 Mercurial : how to get notified whe something pushed to a central repo

android - linux "adb push"命令问题, "No such file or directory"错误

git - git 可以提交 "empty versions"新的非空文件吗?