個人のGitリポジトリを整理するにはどうすればよいですか?


20

私は、最近のiOSプロジェクトの一部として開発した1組のライブラリを、他のiOS開発者が自由に利用できるようにする計画で、GitHubアカウントを設定しています。

現在、ほとんどのコードのオフサイトバックアップはありません。そのため、当初、私はすべての個人プロジェクト、または少なくともすべてのiOSプロジェクトをGitHubがホストするプライベートリポジトリにアップロードすると考えていました。 。しかし、私は多くのプロジェクトを抱えており、その多くはかなり価値の低いものです(つまり、本を改造して学習体験のために書いたものです)。GitHubはプライベートリポジトリによって課金されるだけでなく、リポジトリを階層的に整理する方法もありません。

私が不足しているものがあり、階層でgitリポジトリを使用し、必要なときにそれらをチェックアウトしたり、現在SVNで行っている方法で作業したりできますか?

GitHub(またはBitBucketのような競合他社)には、プロジェクト構成の機能がいくつか欠けていますか?

それに失敗すると、この状況を処理する一般的に受け入れられている「Gitの方法」は何ですか(リリースを目的としていないプロジェクトを破棄し、オフラインで保存し、何らかの方法で一緒にバンドルするなど)。

私が知る限り、私のオプションは次のとおりです。

  1. ライブラリをGitHubに配置し、他のすべてのプロジェクトで自分のSVNをホストし続け、オフサイトバックアップ(非難)に非VCSソリューションを使用し、
  2. 私がリリースする予定のライブラリとソフトウェアをGitHubに(それぞれパブリックおよびプライベートとして)入れ、あまり気にしないプロジェクトのために自分のSVNをホストし続け、XYZの実装方法に関する記憶を更新するために再訪する可能性が高い私の家が破裂した場合(二重の荒れ)、それらを消しても構わないと決めます。
  3. [GitHubおよび/またはBitBucket]にすべてを配置し、必要なものを検索するか、[GitHubおよび/またはBitBucket]アカウントへのオフラインポインターセットを維持することで、途方もない数のリポジトリを持つことに対処する(トリプルブレチ)

2
ここで話しているリポジトリの数を知りたいです。「ポインター」とはどういう意味ですか?
-mhulse

これは古い質問であるため、bitbucketを使用すると、無料の組織を作成したり、組織内でプロジェクトを作成したり、リポジトリを作成したりできます。組織は、特定のユーザー数まで無料です。org / project / repoで権限を管理できます。
xenoterracide

GitHubでは、有料プランで無制限のプライベートリポジトリを提供するようになりました。
ジャック

回答:


11

bitbucket.orgでは、無制限のプライベートリポジトリを作成できます。

Gitでは、コードの一部だけをチェックアウトすることはできません。そのため、各プロジェクトのリポジトリを作成するか、すべてのプロジェクトのクローンを作成する必要があります。現実には、すべての小さなプロジェクトを単一のレポジトリに入れることに問題はありません。一度クローンを作成すると完了です。

Gitを使用すると、ローカルリポジトリを吹き飛ばすか、別のマシンに移動しない限り、コードを再度「チェックアウト」する必要はありません。すべての変更を同期するだけです。

多数のリポジトリで同様の問題があります。すべてを単一のリポジトリに保存できないのは、すべてのリポジトリから異なるバージョンを分岐させる必要があるためです。管理するのは非常に困難です。


確かに、私はおそらくプライベートプロジェクトにBitBucketを使用することを受け入れているので、GitHubを具体的に呼び出すべきではないでしょう。質問をわずかに編集して、特定度を低くしました。
アルカアイト

5

短い答え ...

私の提案: GitHubやBitbucket(またはその他)の公開アカウントから始めてください。いくつかの公開プロジェクトを投げて、ツール/インターフェースの使用を開始します。サービスを理解したら、各サービスの制限、長所、短所を把握する必要があります。そこから、バージョン管理啓発への最適なパスを選択できるはずです。:)


長い答え...

現在、ほとんどのコードのオフサイトバックアップはありません。そのため、当初、私はすべての個人プロジェクト、または少なくともすべてのiOSプロジェクトをGitHubがホストするプライベートリポジトリにアップロードすると考えていました。 。しかし、私は多くのプロジェクトを抱えており、その多くはかなり価値の低いものです(つまり、本を改造して学習体験のために書いたものです)。

独自のGitクライアントのインストールを検討しましたか?既にWebホスティングの料金を支払っている場合、独自のGitセットアップにそのホストを使用するのが理にかなっているかもしれません。

たとえば、私のホストはWebFaction(所属なし)です。

Git Webアプリケーションのインストール

このルートに向かうことで、$$$などを節約できるかもしれません。すでにホスティングの料金を支払っている場合。

GitHubはプライベートリポジトリによって課金されるだけでなく、

他の人のために明確にするために(ここでも、GitHubやBitBucketとのビジネス提携なし):

GitHub:プランと価格

  • 7ドル/月。最大5つのプライベートリポジトリ、それ以外はすべて無制限です。
  • 12ドル/月。最大10個のプライベートリポジトリ、それ以外はすべて無制限です。
  • 12ドル/月。最大20個のプライベートリポジトリ、それ以外はすべて無制限です。

「ビジネスプラン」の価格は異なります。

AtlassianによるBitbucketのGitおよびMercurialリポジトリホスティングの価格

アンドリューが別の回答で述べたように、Bitbucketは無制限のプライベートリポジトリを宣伝しています。

  • 5ユーザー:無料
  • 10ユーザー: 1か月あたり10ドル。
  • 25ユーザー: 1か月あたり25ドル。
  • 50ユーザー: 50ドル/月。
  • 100ユーザー: 100ドル/月。
  • 無制限 $ 200 /月。

リポジトリを階層的に整理する方法はないようです。

「階層的に」とはどういう意味か正確にはわかりません(おそらくSVNに慣れていないためです)。

これが役立つかどうかはわかりませんが、この比較表を見て、コマンドの比較/相違を確認できます。

私が不足しているものがあり、階層でgitリポジトリを使用し、必要なときにそれらをチェックアウトしたり、現在SVNで行っている方法で作業したりできますか?

分岐?

GitHub(またはBitBucketのような競合他社)には、プロジェクト構成の機能がいくつか欠けていますか?

これが役立つかどうかはわかりませんが、以下をご覧ください。

Gitには、コミット(git-gui)およびブラウジング(gitk)用の組み込みGUIツールが付属していますが、プラットフォーム固有のエクスペリエンスを探しているユーザー向けのサードパーティツールがいくつかあります。

...繰り返しますが、それらのツールのいずれかが、何が可能かを感じてもらうのに役立つかどうかはわかりません。

明確にするために、Gitのスキルレベルについてはわかりません。Git/ GitHubを初めて使用する場合、GUIを使用すると、物事を簡単に感じることができます。個人的には、Mac / Windowsアプリ用の公式GitHubを使用するのが好きです。

それに失敗すると、この状況を処理する一般的に受け入れられている「gitの方法」は何ですか(リリースを目的としていないプロジェクトを破棄し、オフラインで保存し、何らかの方法で一緒にバンドルするなど)。

もし私があなただったら、私はリポジトリを使用するでしょう。

プライベートリポジトリはいくつ必要ですか?

GitHubを使用する場合、1つの解決策は、最も安価なプランを取得し、いくつかのプライベートリポジトリを使用して、すべてのテスト/非公開コードを保持することです。mainブランチでフォルダー構造を使用して階層構造を維持することも、複数のブランチを使用して物事をさらに分離することもできます。

ヒント:最新バージョンのGitを使用している場合は、次を使用して特定のブランチをプルできますgit clone -b mybranch --single-branch git://sub.domain.com/repo.git

ただし、ブランチを使用してコード(フォルダーなど)を整理することは、実際には最善の方法ではありません(ただし、このルートに進むことができないということはありません)。

GitHubブランチに関する関連情報については、こちらの回答をご覧ください。

繰り返しますが、複数のレポジトリを使用する方法だと思います。

コードが本当にプライベートである必要があるかどうかを自問するかもしれません。影響なしに上記のコードで公開できる可能性はありますか?

ライブラリをGitHubに配置し、他のすべてのプロジェクトで自分のSVNをホストし続け、オフサイトバックアップ(非難)に非VCSソリューションを使用し、

このルートに向かう場合、Dropbox(または同様のもの)は何らかの形のバージョン管理を取得し、オフサイトバックアップの同期をとるのに良い方法かもしれません。

私がリリースする予定のライブラリとソフトウェアをGitHubに(それぞれパブリックおよびプライベートとして)入れ、あまり気にしないプロジェクトのために自分のSVNをホストし続け、XYZの実装方法に関する記憶を更新するために再訪する可能性が高い私の家が破裂した場合(二重の荒れ)、それらを消しても構わないと決めます。

これにより、「ホスティングの費用は既に支払われていますか?その場合、独自のGitホストをインストールできます」という質問に戻ります。利点は、同じホスト上にすべてではない場合でも、すべてのソースコードをGitの傘下に置くことができることです(つまり、見せたいパブリックのものにGitHubを使用します)。

[GitHubおよび/またはBitBucket]にすべてを配置し、必要なものを検索するか、[GitHubおよび/またはBitBucket]アカウントへのオフラインポインターセットを維持することで、途方もない数のリポジトリを持つことに対処する(トリプルブレチ)

--->上記の私の短い答えをご覧ください。^^^^^^


0

ここに私がやることがあります:

  • 公開したいスタンドアロンプ​​ロジェクトを別のGitHubに配置するリポジトリに配置します。GitHubは現時点ではコードを共有するための事実上の場所であるため、プロジェクトをより発見しやすく/フォークしやすくします。
  • プライベートにしたいプロジェクトについては、選択したプロバイダーがホストするプライベートリポジトリに配置してください。既に述べたように、Bitbucketは無制限のプライベートリポジトリを許可するため、これに適しています。
  • 他のすべてのコードを「ジャンク」レポに入れます。これには、学習とテストに使用されるコードと、実際にはプロジェクトの一部ではない小さなスニペットが含まれます。このプライベートを保持する理由がない限り、このリポジトリをGitHubでホストすることもできます。

    バージョン管理の通常の利点(SVNに既にある)に加えて、コードがオンラインでバックアップされるようになりました。ジャンクコードのいずれかがプロジェクトになった場合、それを独自のリポジトリにスピンオフできます。

    このコードを別のリポジトリに配置するか、gitサブモジュールやサブツリーなどの派手なものを使用できますが、すべてを1つのリポジトリに保持し、フォルダーを使用して整理する方が簡単です。それははるかに簡単で、gitはリポジトリのサイズが問題にならないほど高速です。


0

可能なテクニックの1つは、ブランチを使用することです。

gitリポジトリ内のブランチは、コミットへの単なるポインタであり、互いに関係する必要はありません。そのため、ホスティングサービスで「マイナープロジェクト」リポジトリを作成し、各プロジェクトのそのリポジトリでブランチを使用できます。小規模なプロジェクトが成長した場合、ブランチを独自のリポジトリに簡単に移動できます。

ローカルでは、ブランチを別々のローカルリポジトリに保持するか(ローカルリポジトリとリモートリポジトリを1:1でマッピングする必要はありません)、単一のローカルリポジトリを持ち、git worktreeを使用して複数の作業ツリーを維持できます。個人的には、最初のアプローチはエラーが発生しにくいと思います。


それらを同じリモートリポジトリに保存しても、同じローカルリポジトリを使用する必要はありません。
ピーターグリーン

最後のコメントを忘れてください。git worktreeリポジトリの追加の作業ツリーを作成して、複数のブランチを同時にチェックアウトできるコマンドについて説明しました。これにより、アプローチの欠点は基本的になくなります。独立したブランチごとに作業ツリーを作成し、独立したリポジトリのように使用するだけです。これをあなたの答えに追加することをお勧めします:-)
cmaster-モニカを復活させる

@cmaster、行って...
ピーター・グリーン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.