質問: githubにはwiki機能があり、それをローカル環境で編集する為には - githubのサイトで自分のリポジトリからwikiを開き、最初のページを作る - それをcloneする ということはわかったのですが、どの場所にクローンするべきか悩んでいます。 考えられるのは 1. リポジトリ内にwikiディレクトリを作り、その中にcloneする 2. リポジトリとは別の場所で管理する という方法なのでしょうが、どっちが正解なのか(使いやすいのか)がよくわかりません。 1の方法だとwikiディレクトリをgitignoreして別にcommit&pushして使うのでしょうか 2の方法は無駄にファイルが散らかるような気がするのであまり使いたくありません。 それとも本来のリポジトリをcommit&pushしたらwikiも反映されるような方法があるのでしょうか?
回答: 同じクローンの中に取り込んでしまうのはどうでしょうか。 ``` $ git clone git@github.com:ユーザ名/リポジトリ.git $ cd リポジトリ $ git remote add wiki git@github.com:ユーザ名/リポジトリ.wiki.git $ git fetch wiki $ git checkout -b wiki wiki/master ``` これでコードリポジトリとwikiリポジトリのコミットが全て手元の.gitフォルダに取り込まれます。 ``` $ git checkout wiki $ 編集 Home.md $ git commit -am "Update Home.md" $ git push $ git checkout master $ 作業 : ``` このようにwikiブランチとmasterブランチの間を`checkout`で切り替えながら作業します。この方法はローカルの変更が残っていると切り替えができないので、`stash`や捨てコミットなどをしながら使う事になります。 サブツリーを使うとコード側のリポジトリに含めてしまうこともできます。コマンドが長いのでエイリアスやスクリプトが必要になると思います。 ``` $ git subtree add --squash --prefix=wiki/ wiki $ 編集 wiki/Home.md # Wikiページの変更をコミット (このコミットはoriginに記録される) $ git commit -am "Update wiki/Home.md" # wikiフォルダ内での作業をwikiリポジトリにpush $ git subtree push --prefix=wiki/ wiki master # wikiリポジトリの変更をwikiフォルダにマージ $ git subtree pull --prefix=wiki/ wiki master ``` サブツリーはwikiの変更をorigin内にも記録してしまうので、手段と目的が逆転している気もします。 結局、一番楽な方法はwhatsさんのいう`1. リポジトリ内にwikiディレクトリを作り、その中にcloneする`だと思います。