Dự án vs Kho lưu trữ trong GitHub


188

Trong GitHub, sự khác biệt về khái niệm giữa một dự án (có thể được tạo bên trong một kho lưu trữ) và một kho lưu trữ là gì?

Tôi đã thấy một số câu hỏi tương tự ( ở đây , ở đâyở đây ) trong SO, nhưng không có câu hỏi nào giải thích dự án GitHub là gì, kho lưu trữ GitHub là gì và khi nào nên sử dụng từng câu hỏi.

Tôi sẽ đánh giá cao nếu ai đó có thể giải thích từng thuật ngữ và cung cấp một ví dụ về thời điểm sử dụng / tạo từng thuật ngữ. Chẳng hạn, nếu tôi có một vài ứng dụng nguyên mẫu, tất cả đều độc lập với nhau, tôi phải tạo gì để quản lý một cách có tổ chức mã nguồn cho tất cả chúng?


1
Kho lưu trữ github chỉ là một "thư mục" nơi các tệp và thư mục có thể tồn tại. Những người khác có thể tạo bản sao của "thư mục" này và sửa đổi nó theo ý muốn, sau đó yêu cầu thay đổi của họ được đưa vào kho lưu trữ chính. Đối với các dự án, tôi không chắc vì tôi chưa bao giờ sử dụng chúng.
byxor

1
Bạn nói rằng bạn đã thấy câu hỏi tương tự, nhưng bạn đã thực sự đọc liên kết đầu tiên của bạn? "Đó là một kẻ độc ác, không phải là một điều git. Bạn có thể có nhiều kho lưu trữ cho mỗi dự án." và một câu trả lời khác trên cùng một chủ đề "Git không có những thứ như dự án, chỉ có kho lưu trữ." Nếu bạn thực sự có ý nghĩa với các dự án github, tôi sẽ đề nghị kiểm tra các tài liệu github về nó help.github.com/articles/ợi
PeeHaa

6
@PeeHaa vâng tôi đã làm. Câu đầu tiên nói lên điều này: "Đó là một thứ đáng ghét, không phải là một thứ git. Bạn có thể có nhiều kho lưu trữ cho mỗi dự án." Đối với tôi, điều này nói về Gitorius, không phải GitHub. Ngoài ra, nó nói rằng trong Gitorious bạn có thể có nhiều kho lưu trữ cho mỗi dự án, nhưng trong GitHub thì ngược lại. Vì vậy, tôi thực sự sẽ đánh giá cao nếu bạn có thể giải thích làm thế nào điều này trả lời câu hỏi của tôi?
carlossierra

2
Tôi nghĩ điều này chạm vào ngữ nghĩa trong đó các tính năng mới Dự án - bảng trực quan - mâu thuẫn với việc sử dụng quá tải của thuật ngữ Dự án. Việc bỏ phiếu có khả năng đây không phải là một câu hỏi lập trình.
osowskit 9/11/2016

2
Điều này sẽ có mọi thứ bạn cần github.com/blog/
osowskit

Câu trả lời:


109

GitHub gần đây đã giới thiệu một tính năng mới gọi là Dự án . Điều này cung cấp một bảng trực quan điển hình cho nhiều công cụ Quản lý dự án:

Dự án

Một kho lưu trữ như tài liệu trên GitHub:

Kho lưu trữ là thành phần cơ bản nhất của GitHub. Chúng dễ hình dung nhất như một thư mục của dự án. Kho lưu trữ chứa tất cả các tệp dự án (bao gồm tài liệu) và lưu trữ lịch sử sửa đổi của mỗi tệp. Các kho lưu trữ có thể có nhiều cộng tác viên và có thể là công khai hoặc riêng tư.

Một dự án như được ghi lại trên GitHub:

Bảng dự án trên GitHub giúp bạn tổ chức và ưu tiên công việc của bạn. Bạn có thể tạo bảng dự án cho công việc tính năng cụ thể, lộ trình toàn diện hoặc thậm chí phát hành danh sách kiểm tra. Với bảng dự án, bạn có thể linh hoạt để tạo ra các quy trình công việc tùy chỉnh phù hợp với nhu cầu của bạn.

Một phần của sự nhầm lẫn là tính năng mới, Dự án, mâu thuẫn với việc sử dụng quá tải của thuật ngữ dự án trong tài liệu trên.


1
Vì vậy, tôi đang sử dụng Github để lưu trữ mã cho các dự án nghiên cứu cá nhân A, B, C, v.v. Nếu tôi hiểu chính xác, mỗi dự án nghiên cứu sẽ có kho lưu trữ riêng? Vậy A có được kho lưu trữ, B có kho lưu trữ, C có kho lưu trữ, v.v.?
Plinth

Khi bạn rẽ nhánh Kho lưu trữ, ngã ba của bạn có quyền truy cập vào ảnh chụp nhanh của bảng Dự án không?
geominded

7
Làm thế nào được chọn là một câu trả lời được chấp nhận? chỉ cần sao chép dán những gì được mô tả. nó có thể được đọc bởi OP nhưng mọi người muốn biết với các ví dụ đơn giản.
batmaci

151

Sự thật 1: Các dự án và kho lưu trữ luôn là từ đồng nghĩa trên GitHub.

Sự thật 2: Đây không còn là trường hợp nữa.

Có rất nhiều nhầm lẫn về Kho và Dự án. Trước đây, cả hai thuật ngữ đều được sử dụng thay thế cho nhau bởi người dùng và tài liệu rất riêng của GitHub. Điều này được phản ánh bởi một số câu trả lời và nhận xét ở đây giải thích sự khác biệt tinh tế giữa các điều khoản đó và khi điều khoản này được ưa thích hơn các điều khoản khác. Sự khác biệt luôn luôn tinh tế, ví dụ như trình theo dõi vấn đề là một phần của dự án nhưng không phải là một phần của kho lưu trữ có thể được coi là một điều nghiêm ngặt, v.v.

Không còn nữa.

Các repos và dự án hiện tại đề cập đến một loại thực thể khác nhauAPI riêng biệt :

Kể từ đó, không còn đúng khi gọi repo là một dự án hoặc ngược lại. Lưu ý rằng nó thường bị nhầm lẫn trong tài liệu chính thức và thật không may là một thuật ngữ đã được sử dụng rộng rãi đã được chọn làm tên của thực thể mới nhưng đây là trường hợp và chúng ta phải sống với điều đó.

Hậu quả là các repos và dự án thường bị nhầm lẫn và mỗi khi bạn đọc về các dự án GitHub, bạn phải tự hỏi liệu đó có thực sự là về các dự án hay về repos không. Nếu họ đã chọn một số tên khác hoặc một từ viết tắt như "proj" thì chúng ta có thể biết rằng những gì được thảo luận là loại thực thể mới, một đối tượng chính xác với các thuộc tính cụ thể hoặc một loại dự án nói chung giống như repo.

Thuật ngữ thường không rõ ràng là "bảng dự án" .

Chúng ta có thể học được gì từ API

Điểm cuối đầu tiên trong tài liệu của API dự án:

được mô tả là: Liệt kê các dự án kho lưu trữ . Nó có nghĩa là một kho lưu trữ có thể có nhiều dự án. Vì vậy, hai cái đó không thể có nghĩa giống nhau. Nó bao gồm Phản hồi nếu dự án bị vô hiệu hóa :

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

có nghĩa là một số repos có thể có các dự án bị vô hiệu hóa. Một lần nữa, những điều đó không thể là điều tương tự khi một repo có thể vô hiệu hóa các dự án.

Có một số điểm cuối thú vị khác:

  • Tạo một dự án kho lưu trữ -POST /repos/:owner/:repo/projects
  • Tạo một dự án tổ chức -POST /orgs/:org/projects

nhưng không có :

  • Tạo một dự án của người dùng -POST /users/:user/projects

Điều này dẫn chúng ta đến một sự khác biệt khác:

1. Kho lưu trữ có thể thuộc về người dùng hoặc tổ chức
2. Dự án có thể thuộc về kho hoặc tổ chức

hoặc, quan trọng hơn:

1. Dự án có thể thuộc về kho nhưng không phải theo cách khác
2. Dự án có thể thuộc về tổ chức nhưng không
thuộc về người dùng 3. Kho có thể thuộc về tổ chức và người dùng

Xem thêm:

Tôi biết nó khó hiểu. Tôi đã cố gắng giải thích nó chính xác nhất có thể.


Trong Bitbucket của Atlassian, bạn có thể tạo các dự án bao gồm một nhóm các repos liên quan. Github có tính năng tổ chức này không? Tôi đã mong đợi các dự án Github là điều đó, nhưng rõ ràng là không. Tôi dường như không thể tìm ra cách làm cho tổ chức này có thể có trong Github. Tôi rất quen với Bitbucket, vì vậy nó có thể chỉ là một đường cong học tập.
Ungeheuer

Theo một cách nào đó, nó sẽ có ý nghĩa hơn với tôi nếu một dự án có thể có nhiều kho lưu trữ. Tôi có ấn tượng rằng GitHub nhận thấy rằng nó đang già đi và thay vì thực hiện một thiết kế lại hoàn chỉnh, chỉ chọn để thực hiện một cách giải quyết và bán nó như là một điều tốt. Nhân tiện, ai là chủ sở hữu của GitHub ngay bây giờ? Có lẽ câu trả lời cho một số manh mối về lý do tại sao điều này đang xảy ra. Chỉ cần suy nghĩ thành tiếng.
Almir Campos

19

Kho GitHub được sử dụng để lưu trữ tất cả các tệp, thư mục và các tài nguyên khác mà bạn quan tâm.

Dự án Git: Đây cũng là một trong những Tài nguyên trong Kho lưu trữ Git và công dụng chính của nó là quản lý các dự án bằng một bảng trực quan. Nếu bạn tạo một dự án trong Kho lưu trữ Git, nó sẽ tạo một bảng trực quan giống như bảng Kanban để quản lý dự án.

Theo cách này, bạn có thể có nhiều dự án trong một kho lưu trữ.


4

Nói chung, trên GitHub, 1 repository = 1 dự án . Ví dụ: https://github.com/spring-projects/spring-boot . Nhưng đó không phải là một quy tắc khó khăn.

1 kho = nhiều dự án . Ví dụ: https://github.com/donhuvy/java_examples

1 dự án = nhiều kho lưu trữ . Ví dụ: https://github.com/zendframework/zendframework (1 dự án có tên Zend Framework 3 có 61 + 1 = 62 kho lưu trữ, đừng tin? Hãy đếm mô-đun + kho lưu trữ chính của Zend Frameworks)

Tôi hoàn toàn đồng ý với nhận xét của @Brandon Ibbotson :

Kho lưu trữ GitHub chỉ là một "thư mục" nơi các thư mục và tệp có thể tồn tại.


Cám ơn phản hồi của bạn. Nhưng tôi không nghĩ định nghĩa của bạn về một dự án là cái mà GitHub gọi là một dự án, vì các ví dụ về nhiều kho dự án không hiển thị bất cứ điều gì trong tab Dự án cho các kho lưu trữ đó. Bạn có thể vui lòng giải thích về điều này?
carlossierra

2
Trên thực tế, ví dụ sử dụng Zend Framework là hoàn toàn sai! Theo danh pháp của GitHub, có một tổ chức có tên là "zendframework" sở hữu nhiều kho lưu trữ, bao gồm một kho lưu trữ có tên là "zendframework" và một cho mỗi mô-đun của khung.
igorcadelima

3
Ngày 9 tháng 11 năm 2017: ví dụ về 1 kho lưu trữ = nhiều dự án trả về 404.
Bram Vanroy

1
các liên kết bị hỏng
Pmpr 29/03/19

1
Về mặt GitHub, câu trả lời này mâu thuẫn với các câu trả lời phổ biến khác ở trên.
Manohar Reddy Poreddy

1

Đối với từ vựng git, Project là thư mục chứa nội dung (tệp) thực tế. Trong khi đó Kho lưu trữ (repo) là thư mục bên trong git giữ bản ghi của mọi thay đổi được thực hiện trong thư mục dự án . Nhưng theo một nghĩa chung, hai cái này có thể được coi là giống nhau. Dự án = Kho lưu trữ


1

Sự khác biệt về khái niệm theo tôi hiểu rằng một dự án có thể chứa nhiều repo và độc lập với nhau, trong khi đồng thời một repo có thể chứa nhiều dự án. Repo chỉ là nơi lưu trữ mã trong khi dự án là tập hợp các tác vụ cho một tính năng nhất định.

Điều đó có ý nghĩa? Một repo lớn có thể có nhiều dự án được thực hiện bởi nhiều người khác nhau cùng một lúc (rất nhiều tính năng khác nhau được thêm vào một khối), một dự án lớn có thể có nhiều repos nhỏ riêng biệt nhưng là một phần của cùng một dự án tương tác với nhau khác - microservice? Đó là một cá nhân về những gì bạn muốn làm. Tôi nghĩ rằng repo (lưu trữ) so với dự án (nhiệm vụ) là sự khác biệt chính - nếu tôi sai xin vui lòng cho tôi biết / giải thích! Cảm ơn.


0

Đây là sự hiểu biết cá nhân của tôi về chủ đề này.

Đối với một dự án, chúng ta có thể thực hiện kiểm soát phiên bản bằng các kho khác nhau. Và đối với một kho lưu trữ, nó có thể quản lý toàn bộ dự án hoặc một phần của dự án.

Về dự án của bạn (một số ứng dụng nguyên mẫu độc lập với từng dự án). Bạn có thể quản lý dự án bằng một kho lưu trữ hoặc một số kho lưu trữ, sự khác biệt:

  1. Quản lý bởi một kho lưu trữ. Nếu một trong các ứng dụng bị thay đổi, toàn bộ dự án (tất cả các ứng dụng) sẽ được cam kết cho một phiên bản mới.

  2. Quản lý bởi một số kho lưu trữ. Nếu một ứng dụng bị thay đổi, nó sẽ chỉ ảnh hưởng đến kho lưu trữ quản lý ứng dụng. Phiên bản cho các kho khác không được thay đổi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.