在git init之后自动提交一个空的.gitignore文件?

时间:2011-03-29 22:46:57

标签: git

我想通过简单地触摸一个空的.gitignore文件并提交它,以“空”初始提交开始我的所有git存储库。我的理由与this question大致相同。顺便说一句,第一个提交(“尾部”)没有父提交,因此发生了其他提交不会发生的各种奇怪和意外的事情。

那么有什么类似post-init钩子的东西我可以用touch .gitignore && git commit .gitignore -m "Initial commit"来跟踪每个git init吗?或者我应该编写自己的自定义init命令来执行此操作吗?

3 个答案:

答案 0 :(得分:14)

如果你想在回购中提交,请不要​​使用git init - 它会进行空回购!请改用git clone。只需使用空gitignore的提交创建一个存储库,并在需要此特定伪空存储库时克隆该存储库。 (如果你想在任何地方都可以使用它,你可以在github上公开托管它。)

或者,在本地计算机上,为您想要的内容制作一个git别名:

[alias]
    myinit = !git init && touch .gitignore && git add .gitignore && git commit -m "empty gitignore"

请注意,您不能使用与内置命令相同的名称创建别名。

答案 1 :(得分:3)

执行git init时,.git目录(包含挂钩)初始化为默认值。因此git init之后没有挂钩。一个假设的“post-init”钩子是没用的,因为它可以运行的唯一时间是在钩子目录被初始化的时候(并且不包含任何活动的钩子)。

听起来你可能最好写一个自定义命令,因为钩子不是合适的解决方案。

答案 2 :(得分:3)

它不漂亮,但它会起作用。每当您想要启动仓库时,请运行以下两个命令。

git init
touch .gitignore

然后确保git跟踪你的gitignore文件运行:

git add .gitignore
git commit .gitignore -m "Adding .gitignore"

根据您设置回购的方式,您可能正在执行后两个命令。