35

コマンドで .gitignore、README、LICENSE、その他のファイルの作成を自動化することで、git ワークフローを最適化したいと考えていますgit init

これを行うには、http://git-scm.com/docs/git-init で RTFM を実行するgit init次のいずれかを実行するように指示されます。

  1. 使うgit init --template=<template_directory>けどめんどくさい。
  2. $GIT_TEMPLATE_DIR 環境変数の内容を変更しますが、変更したくありません。
  3. 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 リポジトリにする必要がありますか? むき出し?

4

5 に答える 5

27

表示されている動作は、予想されるgit動作です。

テンプレートディレクトリに関するマニュアルを正しく読んだ場合:

テンプレート ディレクトリ

テンプレート ディレクトリには、作成後に$GIT_DIRにコピーされるファイルとディレクトリが含まれます。

テンプレート ディレクトリからコピーされたファイルは、GIT_DIRデフォルト.gitでレポのルート ディレクトリの下のディレクトリに配置されます。

git init私の知る限り、work-tree のテンプレートはサポートしていません。この動作が必要な場合は、簡単な bash エイリアスまたは関数を作成して、これを行うことができます。

于 2013-05-03T16:31:24.963 に答える
9

実行できますが、いくつかの追加手順が必要になります。

  1. 通常のリポジトリであるかのように、デフォルトのディレクトリ構造を作成します。

    mkdir template && cd template
    git init && touch README.md && cat ~/.gitignore_global > .gitignore
    git add --all && git commit -m "init"
    

(厳密に言えば、この最後のコミットはここでは必要ありませんが、最終的には実行する必要があるため、今は必要ありません)

  1. 作業ツリーを削除し、.git ファイルを上に移動します。

    mv .git/* ./ && rm -r README.md .gitignore .git
    
  2. これをデフォルトのテンプレートとして設定できますが、例として:

    mkdir ../myrepo && cd ../myrepo
    git init --template=../template
    

    (興味深いメッセージに注意してください: Reinitialized existing Git repository...)

  3. ここで重要なステップ: (レポは最新ですが、作業ツリーは最新ではありません):

    git reset --hard
    

    (以前にコミットをスキップした場合は、リセットする前にここでコミットする必要があります)

将来、デフォルトのテンプレートを設定したと仮定すると、単純に

git init && git reset --hard

(直接の参考文献はありませんが、この章は確かに役に立ちます。)

于 2015-02-04T09:44:30.447 に答える
2

私のために働く簡単な解決策:

  • 必要なものを含むディレクトリを固定の場所に作成します。
  • 次に、git リポジトリを開始する場所にその内容をコピーするスクリプトを作成します。

以下に例を示します。

ところで、いくつかの一般的な .gitignore 構成はここで入手できます: https://gist.github.com/octocat/9257657

ディレクトリを設定します。

mkdir ~/.git_template_dir
cd ~/.git_template_dir
echo "..." > .gitignore

スクリプトを作成します。

*ニックス:

#!/bin/bash
git init
cp -R ~/.git_template_dir/ .

Windows (%userprofile% は ~ に相当; %cd% は .):

git init
xcopy %userprofile%\.git_template_dir\ %cd%

次に、簡単にアクセスできるように Path に追加します。

于 2016-07-27T02:00:14.890 に答える