質問: 1. 上記に示したフォルダ構成を保ったまま、gitで効率的に管理することができるものなのでしょうか? 2. ローカルやテスト環境で分けている/1/などのディレクトリをブランチで切って管理するというのがgitの本来の使い方に近いと想像していますが、その場合各ブランチごとにクライアントに確認する用のURLを発行できるものでしょうか? 3. gitの使用や今まで提示した条件に限らず、テスト環境では今までの遍歴が確認でき、本番環境には任意のものをアップするということが実現できるものがあればご教示いただけると大変幸いです。 どうか、みなさまのお知恵をお借りできればと思います。 よろしくお願いいたします。
回答: > > 1. 上記に示したフォルダ構成を保ったまま、gitで効率的に管理することができるものなのでしょうか? > > > まず質問に答えておくと、Gitは単にこのディレクトリ配下の全ファイルをバージョン管理しますよというツールです。 好きなディレクトリ構造にしつつ各ファイルに関してバージョン管理が行えます。 よって1の疑問は可能か不可能かで言えば可能です。 > > 2. ローカルやテスト環境で分けている/1/などのディレクトリをブランチで切って管理するというのがgitの本来の使い方に近いと想像していますが、その場合各ブランチごとにクライアントに確認する用のURLを発行できるものでしょうか? > > > 最新のファイルはmasterブランチにあるというのが一般的なGitの考え方です。 Gitはコミット履歴という履歴を重ねながら積み上げていく考え方をしますので、 バージョン1系のブランチ、バージョン2系のブランチ...という管理の仕方をした場合、 SourcetreeやTig等の外部ツールでコミット履歴を可視化した時に酷いレイアウト崩れが発生する場合があります。 このバージョン1はもしもの時にファイルを取り出すかもしれない倉庫程度の扱いであり、 普段は一切使う用事が無いのであれば、ブランチではなく、タグという概念での管理が楽でしょう。 まずGitでバージョン1系のファイルでコミットし、`v1.0.0`等の名前でタグを作成します。 その後ファイルを全て捨ててバージョン2系のファイルを導入してコミットし、`v2.0.0`等の名前でタグを作成します。 この状態でGitHubに向かって`git push --tags`というコマンドを打ち込むと、 GitHubのページ上で`master`と表示されているセレクトボックスを操作して`v1.0.0`等を選択するとそれらのファイルの一覧が表示されます。 ローカル内でも`git checkout v1.0.0`と打ち込めば、 一時的にプロジェクトルート配下のファイルを`v1.0.0`時代の状態に巻き戻してくれます。 ファイルの参照や抽出が終わったら再度`git checkout master`等として戻りましょう。 > > 3. gitの使用や今まで提示した条件に限らず、テスト環境では今までの遍歴が確認でき、本番環境には任意のものをアップするということが実現できるものがあればご教示いただけると大変幸いです。 > > > 前の項目で触れたタグの機能で、`v1.0.0`と`v2.0.0`に切り替えればディレクトリの状態を切り替える事が可能です。 ただし、それぞれのバージョンを個別に育てて行くような変則的なケースではディレクトリ毎分けるか、プロジェクトを分けた方が良いかと思います。