我想通过简单地触摸一个空的.gitignore文件并提交它,以“空”初始提交开始我的所有git存储库。我的理由与this question大致相同。顺便说一句,第一个提交(“尾部”)没有父提交,因此发生了其他提交不会发生的各种奇怪和意外的事情。
那么有什么类似post-init钩子的东西我可以用touch .gitignore && git commit .gitignore -m "Initial commit"
来跟踪每个git init吗?或者我应该编写自己的自定义init命令来执行此操作吗?
答案 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"
根据您设置回购的方式,您可能正在执行后两个命令。