githubプロジェクトの一部を複製しようとしていますが、ルートフォルダーしか取得できません。githubを使おうとするのはこれが初めてで、tortoisegitをインストールしました。svnとcvsに慣れていて、チェックアウトしたいフォルダーを取得できましたが、gitはルートフォルダーに.gitファイルしか取得していないようです。何をすべきかわからない。
3 に答える
サブツリーのマージがあります。
しかし、これはおそらくあなたのニーズには十分である、より簡単ですが部分的な解決策です。fork して定期的に merge back するだけです。
- リポジトリをフォーク (クローン)
- 不要な部分を削除し、サブフォルダーを必要な場所に移動します
- 専念
将来、アップストリームの Git コードと同期したい場合は、フォークとマージするだけです。git status
保存したファイルは、アップストリームのファイルと同期されます。.
Git コミュニティでは、必要なものは「部分チェックアウト」と呼ばれます。現在 Git ではサポートされていませんが、メーリング リストで時々取り上げられます。Git には、部分的なチェックアウトをサポートするために必要な内部構造の断片がありますが、ユーザーとしてそれらを利用する簡単な方法はありません。最終的には Git で部分的なチェックアウトができるようになると思いますが、それが実現するまでにはしばらく時間がかかるかもしれません。
jhs の回答(サブツリー マージ; rm、mv、コミット、マージ) に加えて、部分的なチェックアウトの操作を容易にするサード パーティ製の「サブツリー」コマンドもあります。それは主な目的ではありませんが、部分的なチェックアウトでどのように使用できるかは明らかではありません。すでに Git を十分に理解している場合は解決できますが、Git を初めて使用する場合、このサブツリー コマンドはかなり不透明になる可能性があります。
最後に、最新のファイルをダウンロードするだけの場合は、特定のブランチまたはタグ (または任意のコミットっぽい) の tar ファイルをダウンロードするために使用git archive
できる場合があります。これは GitHub では機能しない可能性があります (サーバーの構成によって異なります)、私は確認していません。直接動作しない場合でも、独自の「ベア」にクローンを作成し、リポジトリをミラーリングしてから、そこから (サブツリー) アーカイブをプルすることができます。
これは実際には git で行うことではありません。DVCS を使用しているため、リポジトリの履歴全体を取得していることを思い出してください。取得しているディレクトリの外部にあるファイルを変更するコミットはどうなるのでしょうか?
プロジェクトが十分に大きい場合、複製しているレポのメンテナーはサブモジュールを使用してセクションを分割し、開発者が作業したい領域のみをプルダウンできるようにする必要があります。
Git (一般的な DVCS) は、エンドユーザー向けというよりも、開発者向けに設計されています。git (特に github との組み合わせ) は、コーディングに非常に役立つことがわかりました。貢献したいプロジェクトが github にある場合、チェックアウト、ハッキング、差分の作成、見つけようとするのではなく、フォークしてプルダウンし、ハックハックし、プッシュアップし、プル リクエストを送信するだけです。開発者がそれをマージする前に差分が壊れないことを願っています。
Git 全体は確かに svn よりも複雑ですが、それはコーディングが複雑なプロセスだからです。私は DVCS で育ったので、集中型の VCS ワークフローは信じられないほど苦痛です。したがって、同じことを行う場合、git と svn の使用はより複雑になりますが、できることは他にも たくさんあるという利点があります。Git は Linux カーネル開発用に開発されたものであり、それが示しています。