我的最新迭代
jinit= !git init && printf "* text=auto\n*.java text\n*.jsp text\n*.css text\n*.html text\n*.js text\n*.xml text\n*.sql text\n*.MF text\n*.tld text\n*.md text\n\n# git files\n*.gitignore text\n*.gitattributes text\n\n# eclipse files\n*.classpath text\n*.project text\n*.prefs text\n*.properties text\n*.component text\n" >> .gitattributes && echo "bin/" >> .gitignore && git add .
这实际上会尝试在gitattributes中执行这些行!更改\n
\r\n
将导致脚本崩溃,\\\n
将成功运行脚本,尽管gitattributes仅包含
*
那我怎么用新线回应呢? Windows,mingwin,msysgit
编辑:我也试过单引号
编辑2014.03.13 :
jinit= !git init && `echo '* text=auto\n\n*.java text\n*.jsp text\n\
*.css text\n*.html text\n*.js text\n*.xml text\n*.sql text\n*.MF text\n\
*.tld text\n*.md text\n\n*.gitignore text\n*.gitattributes text\n\n\
*.classpath text\n*.project text\n*.prefs text\n*.properties text\n\
*.component text\n' >> .gitattributes` && `echo "bin/" >> .gitignore`
EDIT 2014.03.14 :使用\
来包装命令 - 仍然有效,但在* .css,* .tld,* .classpath和* .component之前引入了一个空格。
似乎无法管理回音评论。所以如果我添加\n# git files\n\*.gitignore text\n (...)
它的EOFs - 为此做任何解决方法吗?
最后我使用了不同的方法(见评论):
jinit= !git init\
&& `ln /c/Dropbox/_/_git/java_eclipse.gitattributes .gitattributes`\
&& `echo "bin/" >> .gitignore`\
&& git add .
但我暂时保持开放状态,语法部分
答案 0 :(得分:0)
它在Linux上运行良好。
为了避免遇到行结尾的问题,你可以让echo添加它:
echo "\* text=auto" >> .gitattributes
echo "\* .java text" >> .gitattributes
[...]
答案 1 :(得分:0)
有一条评论建议您只需将 .gitattributes
文件写入您的 git 模板目录。这是行不通的,因为在 documentation 中,它特别指出:
模板目录中名称不以点开头的文件和目录在创建后将被复制到$GIT_DIR中。
然而,我们实际上可以利用这一点!你说
<块引用>我想为不同的语言使用不同的初始化别名(以及 gitignore/attrs)
这是一个公平的观点!但是,我仍然认为您当前的方法过于复杂。我建议使用 any 名称将文件添加到您的模板目录中,名称以点开头,以便您识别它。例如,您可以选择 .gitattributes-english
和 .gitattributes-french
。
现在,运行以下命令:
git config --global alias.init-english "!git init;cp $(git config init.templatedir)/.gitattributes-english ./.gitattributes"
和
git config --global alias.init-french "!git init;cp $(git config init.templatedir)/.gitattributes-french ./.gitattributes"
现在,git init-english
将初始化一个存储库,并将 .gitattributes-english
的内容从您的模板目录复制到新存储库中的 .gitattributes
,并且不会不添加.gitattributes-french
到新存储库。 git init-french
将改为使用 .gitattributes-french
而不是 .gitattributes-english
。
我认为这还有一个额外的好处,即允许您编辑特定的 .gitattributes
文件而无需更新别名!
您显然不必使用 init.templatedir
我只是发现使用它最有意义,因为这些是模板。
最后请注意,这适用于 Windows!