在git init上设置默认目录结构
我想通过在在git init上设置默认目录结构,git,templates,Git,Templates,我想通过在git init命令上自动创建.gitignore、README、LICENSE和其他文件来优化我的git工作流 要做到这一点,我在RTFM中输入了git init,它告诉我执行以下操作之一: 使用gitinit--template=,但这很麻烦 更改$GIT\u TEMPLATE\u DIR环境变量的内容,但我不希望这样 设置init.templatedir配置变量。现在我们在谈 所以我sudo mkdir/usr/share/git core/templates/my_templa
git init
命令上自动创建.gitignore、README、LICENSE和其他文件来优化我的git工作流
要做到这一点,我在RTFM中输入了git init
,它告诉我执行以下操作之一:
gitinit--template=
,但这很麻烦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
我对自己很满意,我去了我的发展游乐场目录:
$ git init
Initialized empty Git repository in /the/current/directory
$ ls -a
. .. .git
糟糕透了。。。档案在哪里(
快速检查:
$ 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上)?模板应该是git回购吗?是裸回购吗?您看到的行为是预期的
git
行为:
如果您正确阅读了有关模板目录的手册:
mkdir ~/.git_template_dir
cd ~/.git_template_dir
echo "..." > .gitignore
模板目录
模板目录包含文件和
创建后将被复制到$GIT_DIR的目录
从模板目录复制的文件放在您的GIT_DIR
目录中,默认为repo根目录下的.GIT
目录
据我所知,
git init
不支持工作树的模板。如果需要此行为,您应该可以编写一些简单的bash别名或函数来完成此操作。您可以创建一个模板存储库,每次创建新项目时都要对其进行克隆。然后删除.gi在调用git init之前,请将文件夹中的内容复制到新项目中。假设您的模板存储库名为project_template:
$ git clone project_template new_project
$ cd new_project
$ rm -rf .git
$ git init
不是理想的解决方案,但可以编写脚本
这是对提供的步骤的修改,这是特定于使用GitHub的。您可以这样做,但需要一些额外的步骤
mkdir template && cd template
git init && touch README.md && cat ~/.gitignore_global > .gitignore
git add --all && git commit -m "init"
mv .git/* ./ && rm -r README.md .gitignore .git
mkdir ../myrepo && cd ../myrepo
git init --template=../template
(注意有趣的消息:重新初始化现有Git存储库…
)git init && git reset --hard
(我没有直接的参考资料,但肯定有帮助。)您可能会发现cookiecutter工具对于基于灵活模板自动创建框架项目非常有用:
它是跨平台的,并积极维护。虽然它是用python实现的,但它适用于任何类型的项目,不需要任何python专业知识。最重要的是,您可以通过github轻松共享模板。一个简单的解决方案,适用于我:
- 在一个固定的位置制作一个目录,里面有你需要的东西
- 然后制作一个脚本,将其内容复制到要启动git存储库的位置
mkdir ~/.git_template_dir
cd ~/.git_template_dir
echo "..." > .gitignore
编写脚本:
*尼克斯:
Windows(%userprofile%相当于~;%cd%到。):
然后添加到路径以便于访问。现在没有时间写完整的答案,但是所有模板文件都进入
.git
文件夹您完全正确!确实,这些文件位于.git目录中。您可以创建一个包含这些起始文件的repo,然后使用.git
目录作为模板目录吗链接可能会回答问题,最好包含答案的基本部分并提供链接供参考。如果链接页面发生更改,只有链接的答案可能会无效。感谢反馈,我已经重写了答案,以便在帖子中直接提供信息。cp-r…
的目的是什么?您可以>git clone project\u template new\u project取而代之。由于@bummi避免,您插入的链接已断开!:(在GitHub帮助中,当它来自定向时,不是直接克隆该repo,而是通过使用此可用的模板按钮复制它。这样就不需要删除.git
目录或运行git init
,如果您对这里实际发生的管道有更详细的解释感兴趣,我很高兴。)py来解释,但本质上它归结为这样一个事实:git对象(和包)实际上是您的文件(以及提交和目录结构)如果你将它们正确地存储在模板中,那么你可以在任何模板初始化的repo中恢复它们。当然,这也可以通过较低级别的命令来完成,但这样更容易避免错误。
#!/bin/bash
git init
cp -R ~/.git_template_dir/ .
git init
xcopy %userprofile%\.git_template_dir\ %cd%