質問: 非常に初歩的な質問で恐縮なのですがGitHub(Git)のローカルリポジトリの使い方について教えてください. 会社では2種類のバージョン管理システムを使っています.一つはメインのSubversionです.しかし最近GitHubも使用するようになってきました.私はGitHubはGitHub For Windowsを使用していて、たまにヘルプを見ながらGit Shellでコマンドラインを打っているレベルとお考えください. わからない点はGitHub(Git)のSubversionと比べての使い方です. * Subversionはリポジトリのどの階層でもローカルに作業コピーとして持ってこれます.このため、リポジトリにいろいろ入っていても、自分の対象のプログラムフォルダや文書フォルダだけ持ってきて作業できます. * Gitは簡単にローカルリポジトリを作れますが、その中の特定のフォルダで作業するということが出来ないように思えます.例えば私はDITA Open Toolkitのプラグインを作っていますが、この作業を行うためには、常にローカルリポジトリの目的のフォルダから、DITA Open Toolkitのpluginsフォルダにコピーしなければなりません.つまりローカルリポジトリを直接の作業場所にすることがどうしてもできないのです. * このため、直接の作業フォルダでプログラムに変更を加えたら、それをローカルリポジトリにコピーして、リモートにプッシュする.また別のPCで作業するときは、リモートとそのPCのローカルリポジトリを同期させて、そこからまた(そのPCの)直接の作業フォルダにコピーするという作業をやっています. * Subversionの時は直接の作業フォルダ==作業コピーとすることができましたので、作業を始めるときはTortoiseSVNでUpdateを行い、作業終了時にCommitすれば良かったので作業は簡単でした.でも私のGitHub(Git)の使い方では常にフォルダのコピーが伴い、そうはいかないように思えます.ある意味常にコピーし忘れや上書きの危険が付きまとうように思えます. 私の知識不足なのですが、GitHub(Git)でもっと効率的で安全に作業できるようにする方法はありませんでしょうか? 以上 よろしくお願いいたします. ※ なおこの質問は他のQ&Aサイトに数年前にポストしたのですがレスが付かなかったものです.もう時効と考えクロスポストさせていただきました.
回答: シンボリックリンクを使うのが簡便かつ柔軟で、十分な解決策だと思いますが、Sparse checkout という物があるようなので紹介しておきます。 これを使うと、指定したディレクトリのみを Git 配下に pull できます。 以下はコメントで示されているリポジトリのサブディレクトリを扱う例です。 参考: git sparse checkout で一部のサブディレクトリだけを clone せずに pull/checkout する ``` git init git config core.sparsecheckout true git remote add origin 'git@github.com:AntennaHouse/pdf5-ml.git' mkdir .git/info echo com.antennahouse.pdf5.ml > .git/info/sparse-checkout git pull origin master ls -A #=> com.antennahouse.pdf5.ml .git ``` 指定のディレクトリ以外を無視させる `.gitignore` が必要になるかも知れません。 ``` /* !/com.antennahouse.pdf5.ml/ ```