我刚开始研究Git钩子(Hook),但我似乎无法让它们运行。我设置了一个本地存储库,所以我的项目文件夹中现在有一个“.git”目录。我在名为“pre-commit.cmd”的C:/path/to/my/project/.git/hooks目录中添加了一个“.cmd”文件。这是此文件的内容:echo"HOOKRUNNING"echo.2>C:/path/to/my/project/.git/hooks/EmptyFile.txt这应该回显文本“HOOKRUNNING”并在该目录中创建一个空文本文件。但是,如果我通过我的IDE(NetBeans)提交更改或使用GitBash提交,它们似乎都
运行gitadd.然后运行gitcommit-am"commitmessage"是否多余?我可以只运行gitadd.然后gitcommit-m"commitmessage"还是只运行gitcommit-am"commitmessage"? 最佳答案 Gitadd+gitcommit-m只会提交你添加的那些文件(新的和以前跟踪过的),但是gitcommit-am将提交对跟踪文件的所有更改,但不会添加新文件。 关于git-如果我之前执行gitadd,gitcommit-am是多余的吗?,
运行gitadd.然后运行gitcommit-am"commitmessage"是否多余?我可以只运行gitadd.然后gitcommit-m"commitmessage"还是只运行gitcommit-am"commitmessage"? 最佳答案 Gitadd+gitcommit-m只会提交你添加的那些文件(新的和以前跟踪过的),但是gitcommit-am将提交对跟踪文件的所有更改,但不会添加新文件。 关于git-如果我之前执行gitadd,gitcommit-am是多余的吗?,
这个问题说明了一切。有没有办法在merge之前执行操作?我猜想有一种方法可以利用pre-commitHook,但我不太确定。 最佳答案 您可以尝试使用prepare-commit-msgHook。第二个参数将是merge“如果提交是merge或.git/MERGE_MSG文件存在”。非零退出状态将中止提交。我认为这不适用于快进merge,因为不会有提交消息。关于钩子(Hook)的更多信息:https://www.kernel.org/pub/software/scm/git/docs/githooks.html#_prepare_c
这个问题说明了一切。有没有办法在merge之前执行操作?我猜想有一种方法可以利用pre-commitHook,但我不太确定。 最佳答案 您可以尝试使用prepare-commit-msgHook。第二个参数将是merge“如果提交是merge或.git/MERGE_MSG文件存在”。非零退出状态将中止提交。我认为这不适用于快进merge,因为不会有提交消息。关于钩子(Hook)的更多信息:https://www.kernel.org/pub/software/scm/git/docs/githooks.html#_prepare_c
第一次使用git,设置了用户名和用户邮箱。我使用的命令如下:gitconfig--globaluser.email"bob@example.com"gitconfiguser.email"bob@example.com"gitconfig--globaluser.name"bob"gitconfiguser.name"bob"当我运行gitcommit--author"bob"时,出现错误fatal:Noexistingauthorfoundwith'bob'。如何设置用户名和邮箱? 最佳答案 你应该停止使用--author每次提交
第一次使用git,设置了用户名和用户邮箱。我使用的命令如下:gitconfig--globaluser.email"bob@example.com"gitconfiguser.email"bob@example.com"gitconfig--globaluser.name"bob"gitconfiguser.name"bob"当我运行gitcommit--author"bob"时,出现错误fatal:Noexistingauthorfoundwith'bob'。如何设置用户名和邮箱? 最佳答案 你应该停止使用--author每次提交
这个问题在这里已经有了答案:Howtoundo“gitcommit--amend”doneinsteadof“gitcommit”(12个回答)3年前关闭。我不小心输入了gitcommit--amend。这是一个错误,因为我意识到提交实际上是全新的,应该使用新消息提交。我想做一个新的提交。如何撤消此操作? 最佳答案 PetSerAl'scomment是关键。这是执行您想要的操作的两个命令序列:gitreset--soft@{1}gitcommit-C@{1}并解释这是如何工作的。描述当您进行新的提交时,Git通常1使用以下事件序列:
这个问题在这里已经有了答案:Howtoundo“gitcommit--amend”doneinsteadof“gitcommit”(12个回答)3年前关闭。我不小心输入了gitcommit--amend。这是一个错误,因为我意识到提交实际上是全新的,应该使用新消息提交。我想做一个新的提交。如何撤消此操作? 最佳答案 PetSerAl'scomment是关键。这是执行您想要的操作的两个命令序列:gitreset--soft@{1}gitcommit-C@{1}并解释这是如何工作的。描述当您进行新的提交时,Git通常1使用以下事件序列:
我的提交后钩子(Hook)在git之后没有运行。如果我只是从终端运行它,我已经验证了钩子(Hook)确实有效。钩子(Hook)中的代码是:#!/bin/sh#.git/hooks/post-commit#Anexamplehookscriptthatiscalledafterasuccessful#commitismade.##Toenablethishook,renamethisfileto"post-commit".perl-pi-e's/([a-f0-9]+)$/'$(gitrev-parseHEAD)/../../config/commit.git我确实在./.git/hook