GitHub의 프로젝트 및 리포지토리


189

GitHub에서 (리포지토리 내에서 생성 할 수있는) 프로젝트와 리포지토리의 개념적 차이점은 무엇입니까?

나는 비슷한 몇 가지 질문 ( here , herehere )을 보았지만 GitHub 프로젝트가 무엇인지, GitHub 리포지토리가 무엇인지, 각각의 사용시기를 설명하는 것은 없습니다.

누군가가 각 용어를 설명하고 각 용어를 사용 / 만드는시기에 대한 예를 제공 할 수 있다면 감사하겠습니다. 예를 들어, 서로 독립적 인 여러 프로토 타입 응용 프로그램이있는 경우 모든 응용 프로그램의 소스 코드를 체계적으로 관리하기 위해 무엇을 작성해야합니까?


1
github 저장소는 파일과 폴더가 존재할 수있는 "디렉토리"입니다. 다른 사람들은이 "디렉토리"의 자체 사본을 작성하고 원하는대로 수정 한 다음 변경 사항을 기본 저장소에 저장하도록 요청할 수 있습니다. 프로젝트에 관해서는, 내가 사용한 적이 없기 때문에 확실하지 않습니다.
byxor

1
비슷한 질문을 보았지만 실제로 첫 번째 링크를 읽었습니까? "이것은 git 일이 아니라 비참하다. 프로젝트 당 여러 저장소를 가질 수있다." 같은 스레드에 대한 또 다른 대답은 "Git에는 프로젝트와 같은 것이 없으며 리포지토리 만 있습니다."입니다. 실제로 github 프로젝트를 의미한다면 github 문서를 확인하십시오 help.github.com/articles/…
PeeHaa

6
@PeeHaa 그렇습니다. 첫 번째 문장은 다음과 같이 말합니다 : "그건 git 일이 아니라 비참합니다. 프로젝트 당 여러 저장소를 가질 수 있습니다." 나에게 이것은 GitHub가 아니라 Gitorius에 대해 이야기합니다. 또한 Gitorious에서는 프로젝트 당 여러 저장소를 가질 수 있지만 GitHub에서는 다른 방법이 있습니다. 그래서 이것이 어떻게 내 질문에 대답하는지 설명 할 수 있다면 정말 감사하겠습니다.
carlossierra

2
새로운 기능인 프로젝트-비주얼 보드-가 프로젝트라는 용어의 오버로드 된 사용법과 충돌하는 시맨틱에 대해 생각합니다. 다운 투표는 이것이 프로그래밍 문제가 아닐 가능성이 높습니다.
osowskit

2
이것은 당신이 필요로하는 모든 것을 가지고 있어야합니다. github.com/blog/…
osowskit

답변:


110

GitHub는 최근 Projects 라는 새로운 기능을 도입했습니다 . 이는 많은 프로젝트 관리 도구에 일반적인 비주얼 보드를 제공합니다.

계획

저장소 GitHub의에 설명 된대로 :

저장소는 GitHub의 가장 기본적인 요소입니다. 프로젝트 폴더로 가장 쉽게 상상할 수 있습니다. 저장소에는 모든 프로젝트 파일 (문서 포함)이 포함되며 각 파일의 개정 내역이 저장됩니다. 리포지토리에는 여러 공동 작업자가있을 수 있으며 공개 또는 비공개 일 수 있습니다.

프로젝트는 GitHub의에 설명 된대로 :

GitHub의 프로젝트 보드는 작업을 구성하고 우선 순위를 정하는 데 도움이됩니다. 특정 기능 작업, 포괄적 인 로드맵 또는 릴리스 체크리스트를위한 프로젝트 보드를 만들 수 있습니다. 프로젝트 보드를 사용하면 필요에 맞는 맞춤형 워크 플로우를 생성 할 수 있습니다.

혼란의 일부는 새로운 기능인 Projects가 위의 문서에서 오버로드 된 용어 프로젝트 사용과 충돌한다는 것 입니다.


1
그래서 Github을 사용하여 개별 연구 프로젝트 A, B, C 등의 코드를 저장하고 있습니다. 올바르게 이해한다면 각 연구 프로젝트에 자체 저장소가 있습니까? A는 저장소를, B는 저장소를, C는 저장소 등을 얻습니까?
Plinth

리포지토리를 포크 할 때 포크가 프로젝트 보드의 스냅 샷에 액세스 할 수 있습니까?
18:01에 geominded

7
이것이 어떻게 정답으로 선택됩니까? 설명 된 내용의 붙여 넣기 만하면됩니다. OP는 읽을 수 있지만 사람들은 간단한 예를 알고 싶어합니다.
batmaci

152

사실 1 : 프로젝트와 리포지토리는 항상 GitHub의 동의어였습니다.

사실 2 : 더 이상 그렇지 않습니다.

리포지토리와 프로젝트에 대해 많은 혼란이 있습니다. 과거에는 두 용어가 사용자와 GitHub의 자체 문서에서 거의 상호 교환 적으로 사용되었습니다. 여기에는이 용어들 사이의 미묘한 차이점과 다른 용어보다 선호되는시기를 설명하는 여기에있는 일부 답변과 의견이 반영되어 있습니다. 차이는 항상 미묘했습니다. 예를 들어 이슈 트래커는 프로젝트의 일부이지만 엄격하게 자식으로 간주 될 수있는 리포지토리의 일부는 아닙니다.

더 이상은 아닙니다.

현재 repos와 프로젝트 는 별도의 API 를 가진 다른 종류의 엔티티 를 참조합니다 .

그 이후로 더 이상 repo를 프로젝트로 호출하거나 그 반대로 호출하는 것은 올바르지 않습니다. 그것은 공식 문서에서 종종 혼동되며 이미 널리 사용되는 용어가 새로운 실체의 이름으로 선택되었다는 것은 불행한 일입니다.

결과적으로 repos와 프로젝트가 혼란스럽고 GitHub 프로젝트에 대해 읽을 때마다 실제로 프로젝트에 관한 것인지 repos에 관한 것인지 궁금해해야합니다. 그들이 "proj"와 같은 다른 이름이나 약어를 선택했다면, 논의 된 것은 새로운 유형의 실체, 구체적인 속성을 가진 정확한 대상, 또는 일반적인 말하기 레포와 같은 투사 같은 것임을 알 수 있습니다.

일반적으로 모호하지 않은 용어는 "프로젝트 보드" 입니다.

API에서 무엇을 배울 수 있습니까

Projects API 문서의 첫 번째 엔드 포인트 :

목록 저장소 프로젝트 로 설명됩니다 . 이는 저장소에 많은 프로젝트가있을 수 있음을 의미합니다. 따라서이 둘은 같은 것을 의미 할 수 없습니다. 프로젝트가 비활성화 된 경우 응답 이 포함됩니다 .

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

이는 일부 repos가 프로젝트를 비활성화 할 수 있음을 의미합니다. 리포지토리에서 프로젝트를 비활성화 할 수있는 경우에도 마찬가지입니다.

다른 흥미로운 엔드 포인트가 있습니다.

  • 리포지토리 프로젝트 만들기 -POST /repos/:owner/:repo/projects
  • 조직 프로젝트 만들기 -POST /orgs/:org/projects

그러나 없습니다 :

  • 사용자 프로젝트 만들기 -POST /users/:user/projects

이것은 또 다른 차이점으로 이어집니다.

1. 리포지토리는 사용자 또는 조직에 속할 수 있습니다
에 속할 수 있습니다. 2. 프로젝트는 저장소 또는 조직에 속할 수 있습니다.

또는 더 중요한 것은 :

1. 프로젝트는 리포지토리에 속할 수 있지만 다른 방법으로
는 할 수 없습니다. 2. 프로젝트는 조직에 속할 수 있지만 사용자에게는
속할 수 없습니다. 3. 리포지토리는 조직 및 사용자에 속할 수 있습니다

또한보십시오:

혼란 스럽습니다. 최대한 정확하게 설명하려고 노력했습니다.


Atlassian의 Bitbucket에서 관련 repos 제품군을 포함하는 프로젝트를 만들 수 있습니다. Github에이 조직 기능이 있습니까? 나는 Github Projects가 그렇게 될 것으로 예상했지만 분명히 그렇지 않습니다. Github 에서이 조직을 가능하게하는 방법을 알 수없는 것 같습니다. 나는 Bitbucket에 매우 익숙하므로 학습 곡선 일 수 있습니다.
Ungeheuer

특정 방식으로 하나의 프로젝트가 여러 저장소를 가질 수 있다면 더 의미가 있습니다. 나는 GitHub가 오래되었다는 것을 알아 차리고 완전히 재 설계하는 대신 해결 방법을 만들고 그것을 좋은 것으로 판매하기로 결정했습니다. 그건 그렇고, 지금 GitHub의 소유자는 누구입니까? 아마도 대답은 왜 이런 일이 일어나고 있는지에 대한 힌트를 줄 것입니다. 그냥 큰소리로 생각해
Almir Campos

19

GitHub 리포지토리는 관심있는 모든 파일, 폴더 및 기타 리소스를 저장하는 데 사용됩니다.

Git Project : Git Repository의 리소스 중 하나이며 주로 Visual Board로 프로젝트를 관리하는 데 사용됩니다. Git Repository에서 프로젝트를 만들면 프로젝트를 관리하기 위해 Kanban 보드와 같은 비주얼 보드를 만듭니다.

이런 방식으로 저장소에 여러 프로젝트를 가질 수 있습니다.


4

일반적으로 GitHub에서 1 repository = 1 project 입니다. 예를 들면 다음과 같습니다 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 개의 저장소가 있습니다.

나는 @Brandon Ibbotson의견에 전적으로 동의합니다 .

GitHub 저장소는 폴더와 파일이 존재할 수있는 "디렉토리"입니다.


답변 주셔서 감사합니다. 그러나 다중 프로젝트 저장소의 예제는 해당 저장소의 프로젝트 탭에 아무것도 표시하지 않기 때문에 프로젝트에 대한 정의가 GitHub가 프로젝트라고 부르는 것이라고 생각하지 않습니다. 이것에 대해 자세히 설명해 주시겠습니까?
carlossierra

2
실제로 Zend Framework를 사용한 예제는 완전히 틀 렸습니다! GitHub의 명명법에 따르면 "zendframework"라는 이름의 조직과 프레임 워크의 각 모듈마다 하나씩을 포함하여 많은 저장소를 소유하는 "zendframework"라는 조직이 있습니다.
igorcadelima

3
2017년 11월 9일 :의 예 1 개 저장소 = 많은 프로젝트 (404) 반환
브람 Vanroy

1
링크가 끊어짐
Pmpr

1
GitHub의 관점에서이 답변은 위의 다른 인기있는 답변과 충돌합니다.
Manohar Reddy Poreddy

1

git 어휘와 관련하여 Project 는 실제 내용 (파일)이있는 폴더입니다. 반면 Repository (repo) 는 git이 프로젝트 폴더 에서 변경된 모든 내용을 기록하는 폴더입니다. 그러나 일반적으로이 두 가지가 동일한 것으로 간주 될 수 있습니다. 프로젝트 = 리포지토리


1

프로젝트가 많은 저장소를 포함 할 수 있고 서로 독립적이며 프로젝트가 여러 프로젝트를 포함 할 수 있다는 점을 이해한다는 개념상의 차이점. Repo는 코드를 저장하는 장소 일 뿐이며 프로젝트는 특정 기능에 대한 작업 모음입니다.

말이 돼? 큰 리포지토리에는 여러 사람이 동시에 여러 프로젝트를 작업 할 수 있으며 (모노리스에 많은 차이 기능이 추가됨) 큰 프로젝트에는 서로 별개이지만 동일한 프로젝트의 일부인 작은 리포지토리가있을 수 있습니다. 기타-마이크로 서비스? 당신이하고 싶은 일을 개인적으로 취합니다. 레포 (스토리지) 대 프로젝트 (작업)가 주요 차이점이라고 생각합니다. 잘못되면 알려주세요 / 설명하십시오! 감사.


0

이것이 주제에 대한 나의 개인적인 이해입니다.

프로젝트의 경우 다른 리포지토리별로 버전 제어를 수행 할 수 있습니다. 그리고 저장소의 경우 전체 프로젝트 또는 프로젝트의 일부를 관리 할 수 ​​있습니다.

프로젝트 (각각 독립적 인 여러 프로토 타입 응용 프로그램)와 관련하여. 하나의 저장소 또는 여러 저장소로 프로젝트를 관리 할 수 ​​있습니다. 차이점은 다음과 같습니다.

  1. 하나의 저장소로 관리하십시오. 응용 프로그램 중 하나가 변경되면 전체 프로젝트 (모든 응용 프로그램)가 새 버전으로 커밋됩니다.

  2. 여러 저장소로 관리하십시오. 하나의 응용 프로그램이 변경되면 응용 프로그램을 관리하는 저장소에만 영향을줍니다. 다른 리포지토리의 버전은 변경되지 않았습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.