我想优化我的git工作流程,通过git init
命令自动创建.gitignore,README,LICENSE和其他文件。
要做到这一点,我RTFM的git init
在http://git-scm.com/docs/git-init,它告诉我做以下之一:
1.使用git init --template=<template_directory>
,但这很麻烦。
1.修改$GIT_TEMPLATE_DIR环境变量的内容,但我不想这样做。
1.设置init.templatedir
配置变量。这才像话嘛!
所以我sudo mkdir /usr/share/git-core/templates/my_template
和touch
一些文件在它,然后我vim ~/.gitconfig
和追加:
[init]
templatedir = /usr/share/git-core/templates/my_template
git config -l
告诉我:
...
init.templatedir=/usr/share/git-core/templates/my_template
...
我对自己很满意,我去我的发展Playground目录,然后:
$ git init
Initialized empty Git repository in /the/current/directory
$ ls -a
. .. .git
Bummer...文件在哪里?:(
快速检查:
$ ls -a /usr/share/git-core/templates/my_template
. .. .gitignore LICENSE README.md
$ git --version
git version 1.8.2.1
$ git init --template=/usr/share/git-core/templates/my_template
似乎也不起作用。
我到底做错了什么?配置指令不正确?错误的模板或其位置(我在OSX上)?template应该是git repo吗?一个光秃秃的?
6条答案
按热度按时间ou6hu8tu1#
您看到的行为是预期的
git
行为:如果您正确阅读了有关模板目录的手册:
模板目录
模板目录包含创建后将复制到**$GIT_DIR**的文件和目录。
从模板目录复制的文件被放置在
GIT_DIR
中,默认情况下,该目录位于repo根目录下的.git
目录中。据我所知,
git init
不支持工作树模板。如果需要这种行为,您应该能够通过编写一些简单的bash别名或函数来完成此操作。jucafojl2#
你可以做到这一点,但它需要一些额外的步骤。
1.创建默认目录结构,就像它是一个普通的存储库一样:
(严格地说,最后一次提交在这里是不必要的,但是你最终还是要做的,所以为什么不现在就做呢)
1.现在移除你的工作树并将.git文件上移:
1.您现在可以将其设置为默认模板,但为了举例:
(Note有趣的消息:
Reinitialized existing Git repository...
)1.现在重要的一步:(你的repo是最新的,但你的工作树不是):
(if如果你之前跳过了提交,你必须在重置之前在这里提交)
将来,假设您已经设置了默认模板,您只需
(我没有直接引用,但this chapter肯定有帮助。
ogsagwnx3#
您可以创建一个模板存储库,每次要创建新项目时都要克隆该存储库。然后删除.git文件夹并将内容复制到新项目中,然后调用git init。假设您的模板存储库名为project_template:
不是一个理想的解决方案,但它可以被脚本化。
这是对here提供的步骤的修改,这是特定于使用GitHub的。
0sgqnhkj4#
您可能会发现cookiecutter工具对于基于灵活模板自动初始创建 backbone 项目非常有用:
https://github.com/audreyr/cookiecutter
它是跨平台的,并积极维护。虽然它是用Python实现的,但它适用于任何类型的项目,并且不需要任何Python专业知识。最重要的是,你可以通过github轻松分享你的模板。
cvxl0en25#
一个简单的解决方案,为我工作:
下面是一个例子。
顺便说一下,一些常见的.gitignore配置可以在这里找到:https://gist.github.com/octocat/9257657
设置目录:
编写脚本:
Windows(%userprofile%相当于~; %cd%到.):
然后添加到路径以便于访问。
u4dcyp6a6#
您需要:
hooks
目录中添加所需的钩子然后才在要更新的存储库的根目录下发出
git init
。