GitHubのプロジェクトとリポジトリ


188

GitHubで、プロジェクト(リポジトリ内に作成できる)とリポジトリの概念的な違いは何ですか?

SOでいくつかの同様の質問(ここここここ)を見たことがありますが、どれもG​​itHubプロジェクトとは何か、GitHubリポジトリとは何か、およびそれぞれをいつ使用するかについて説明していません。

誰かが各用語を説明し、それぞれの用語をいつ使用/作成するかの例を提供していただければ幸いです。たとえば、すべて独立した複数のプロトタイプアプリケーションがある場合、それらすべてのソースコードを体系的に管理するために何を作成すればよいですか?


1
GitHubリポジトリは、ファイルとフォルダが存在できる単なる「ディレクトリ」です。他の人は、この「ディレクトリ」の独自のコピーを作成し、必要に応じてそれを変更してから、変更をメインリポジトリに入れるように要求できます。プロジェクトについては、使用したことがないのでわかりません。
byxor

1
あなたは同様の質問を見たと言いましたが、実際に最初のリンクを読んだことがありますか?「これはgitのようなものではありません。プロジェクトごとに複数のリポジトリを持つことができます。」そして、同じスレッドの別の答えは、「Gitにはプロジェクトなどはなく、リポジトリのみです。」です。あなたは確かに実際にgithubのプロジェクトを意味している場合、私はそれについてgithubのドキュメントをチェックアウトすることをお勧めhelp.github.com/articles/...
PeeHaa

6
@PeeHaaはい、私はやった。最初の文はこれを述べています:「それはgitのことではなく、冗談です。プロジェクトごとに複数のリポジトリを持つことができます。」私にとって、これはGitHubではなくGitoriusについて語っています。また、Gitoriousではプロジェクトごとに複数のリポジトリを持つことができると書かれていますが、GitHubではその逆です。それで、これが私の質問にどのように答えているのか説明していただければ幸いです。
carlossierra 2016年

2
これは、新機能のプロジェクト-ビジュアルボード-がプロジェクトという用語の過負荷の使用と競合するセマンティクスに影響を与えると思います。反対票は、これがプログラミングの問題ではない可能性があります。
osowskit

2
これは、あなたが必要なものがすべて揃っている必要がありgithub.com/blog/...
osowskit

回答:


109

GitHubは最近Projectsと呼ばれる新機能を導入しました。これにより、多くのプロジェクト管理ツールに典型的な視覚的なボードが提供されます。

事業

リポジトリ GitHubの上で文書化されているように:

リポジトリは、GitHubの最も基本的な要素です。プロジェクトのフォルダとして想像するのが最も簡単です。リポジトリには、すべてのプロジェクトファイル(ドキュメントを含む)が含まれ、各ファイルの変更履歴が保存されます。リポジトリは複数の共同作業者を持つことができ、パブリックまたはプライベートのいずれかにすることができます。

A プロジェクト GitHubの上で文書化されているように:

GitHubのプロジェクトボードは、作業の整理と優先順位付けに役立ちます。特定の機能作業、包括的なロードマップ、またはリリースチェックリストのプロジェクトボードを作成できます。プロジェクトボードを使用すると、ニーズに合ったカスタマイズされたワークフローを柔軟に作成できます。

混乱の一部は、新機能であるプロジェクトが、上記のドキュメントでのプロジェクトという用語の過負荷使用と競合することです。


1
したがって、Githubを使用して、個々の研究プロジェクトA、B、Cなどのコードを格納しています。それを正しく理解している場合、各研究プロジェクトは独自のリポジトリを取得しますか?つまり、Aはリポジトリを取得し、Bはリポジトリを取得し、Cはリポジトリを取得します。
台座、

リポジトリをフォークするとき、フォークはプロジェクトボードのスナップショットにアクセスできますか?
geominded

7
これはどのように受け入れられた回答として選ばれるのですか?記載されている内容をコピーして貼り付けてください。それはOPで読むことができますが、人々は簡単な例で知りたいです。
batmaci

151

事実1:プロジェクトとリポジトリは常にGitHubの同義語でした。

事実2:これはもう当てはまりません。

リポジトリとプロジェクトについては多くの混乱があります。以前は、両方の用語がユーザーとGitHubの独自のドキュメントでほとんど同じ意味で使用されていました。これは、これらの用語間の微妙な違いと、一方が他方よりも好まれる時期を説明するここでの回答とコメントの一部に反映されています。違いは常に微妙でした。たとえば、課題追跡がプロジェクトの一部であるが、厳密にはgitのものと考えられるリポジトリの一部ではないなど。

もう違います。

現在、リポジトリとプロジェクトは、別々のAPIを持つさまざまな種類のエンティティを参照しています

それ以来、レポをプロジェクトと呼ぶこと、またはその逆を行うことはもはや正しくありません。公式ドキュメントではしばしば混乱していることに注意してください。すでに広く使用されている用語が新しいエンティティの名前として選択されているのは残念ですが、これは事実です。

その結果、リポジトリとプロジェクトは通常混乱し、GitHubプロジェクトについて読むたびに、それが本当にプロジェクトに関するものなのか、それともリポジトリに関するものなのか疑問に思う必要があります。彼らが他の名前または「proj」のような略語を選択した場合、説明されているのは、新しいタイプのエンティティ、具体的なプロパティを持つ正確なオブジェクト、または一般的に言えばレポのようなプロジェクトのようなものです。

通常、明確な用語は「プロジェクトボード」です。

APIから何を学ぶことができるか

Projects APIのドキュメントの最初のエンドポイント:

の説明は次のとおりです。つまり、リポジトリは多くのプロジェクトを持つことができます。したがって、これら2つが同じことを意味することはできません。プロジェクトが無効になっている場合の応答が含まれます

{
  "message": "Projects are disabled for this repo",
  "documentation_url": "https://developer.github.com/v3"
}

つまり、一部のリポジトリはプロジェクトを無効にすることができます。繰り返しになりますが、リポジトリがプロジェクトを無効にできる場合、これらは同じことではありません。

他にも興味深いエンドポイントがいくつかあります。

  • リポジトリプロジェクトを作成する -POST /repos/:owner/:repo/projects
  • 組織プロジェクトを作成する -POST /orgs/:org/projects

しかしありません

  • ユーザーのプロジェクトを作成 -POST /users/:user/projects

これにより、別の違いが生じます。

1.リポジトリはユーザーまたは組織に属することができます
2.プロジェクトはリポジトリまたは組織に属することができます

または、より重要なこと:

1.プロジェクトはリポジトリに所属できますが、その逆はできません
2.プロジェクトは組織に所属
できますが、ユーザーには所属できません3.リポジトリは組織とユーザーに所属できます

以下も参照してください。

私はそれが混乱していることを知っています。私はそれをできるだけ正確に説明しようとしました。


アトラシアンのBitbucketでは、関連するリポジトリのファミリーを含むプロジェクトを作成できます。Githubにはこの整理機能がありますか?Github Projectsがそうなると思っていましたが、明らかにそうではありません。この組織をGithubで実現する方法を理解できていないようです。私はBitbucket にとても慣れているので、それは単なる学習曲線かもしれません。
Ungeheuer

特定の方法で、1つのプロジェクトが複数のリポジトリを持つことができれば、私にはもっと理にかなっています。私はGitHubがそれが古くなっていることに気づき、完全な再設計を行う代わりに、回避策を作成してそれを良いものとして販売することを選んだという印象を受けています。ちなみに、現在GitHubの所有者は誰ですか?多分答えはこれがなぜ起こっているかについていくつかの手掛かりを与えます。大声で考えてください。
Almir Campos

19

GitHubリポジトリは、気になるすべてのファイル、フォルダ、その他のリソースを保存するために使用されます。

Gitプロジェクト:Gitリポジトリのリソースの1つでもあり、主な用途はビジュアルボードでプロジェクトを管理することです。Gitリポジトリでプロジェクトを作成すると、プロジェクトを管理するためのカンバンボードのようなビジュアルボードが作成されます。

このようにして、リポジトリに複数のプロジェクトを含めることができます。


4

一般に、GitHubでは、1つのリポジトリ= 1つのプロジェクトです。例:https : //github.com/spring-projects/spring-boot。しかし、それは難しいルールではありません。

1つのリポジトリ=多くのプロジェクト。例:https : //github.com/donhuvy/java_examples

1プロジェクト=多くのリポジトリ。たとえば:https://github.com/zendframework/zendframework(Zend Frameworkの3という名前の1つのプロジェクトは、61 + 1 = 62リポジトリを持っている、とは思わないメインリポジトリ+ Zendのフレームワークモジュールを数えるようにしますか?)

@Brandon Ibbotsonコメントに完全に同意します

GitHubリポジトリは、フォルダとファイルが存在できる「ディレクトリ」にすぎません。


御返答いただき有難うございます。ただし、プロジェクトの定義はGitHubがプロジェクトと呼んでいるものではないと思います。複数プロジェクトリポジトリの例では、それらのリポジトリの[プロジェクト]タブに何も表示されないためです。これについて詳しく説明していただけますか?
carlossierra 2016年

2
実際、Zend Frameworkを使用した例は完全に間違っています。GitHubの命名法によると、「zendframework」という名前の組織とフレームワークの各モジュール用のリポジトリを含む、多くのリポジトリを所有する「zendframework」という組織があります。
igorcadelima

3
2017年11月9日:例1リポジトリ=多くのプロジェクトが 404返す
ブラムVanroy

1
リンクが壊れている
Pmpr

1
GitHubに関しては、この回答は上記の他のより一般的な回答と競合しています。
Manohar Reddy Poreddy

1

git語彙に関して、プロジェクトは実際のコンテンツ(ファイル)が存在するフォルダーです。一方、リポジトリ(レポ)は、gitがプロジェクトフォルダーで行われたすべての変更の記録を保持するフォルダーです。しかし、一般的な意味では、これら2つは同じであると考えることができます。 プロジェクト=リポジトリ


1

私の理解における概念的な違いは、プロジェクトには多くのレポが含まれる可能性があり、互いに独立している一方で、同時にレポは多くのプロジェクトを含む可能性があるということです。Repoは単なるコードの保管場所であり、プロジェクトは特定の機能のタスクのコレクションです。

それは理にかなっていますか?大規模なリポジトリでは、さまざまな人が同時に多くのプロジェクトに取り組んでいる可能性があります(モノリスに追加されるさまざまな機能がたくさんあります)。その他-マイクロサービス?それはあなたが何をしたいかについての個人的な見解です。私はリポジトリ(ストレージ)とプロジェクト(タスク)の主な違いだと思います-私が間違っている場合は、私に知らせてください/説明してください!ありがとう。


0

これは、このトピックに関する私の個人的な理解です。

プロジェクトの場合、さまざまなリポジトリーでバージョン管理を行うことができます。また、リポジトリの場合、プロジェクト全体またはプロジェクトの一部を管理できます。

プロジェクトについて(それぞれに依存しないいくつかのプロトタイプアプリケーション)。1つのリポジトリまたは複数のリポジトリでプロジェクトを管理できますが、違いは次のとおりです。

  1. 1つのリポジトリで管理します。アプリケーションの1つが変更されると、プロジェクト全体(すべてのアプリケーション)が新しいバージョンにコミットされます。

  2. 複数のリポジトリで管理します。1つのアプリケーションが変更された場合、そのアプリケーションを管理するリポジトリにのみ影響します。他のリポジトリのバージョンは変更されていません。

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