Khi tôi đang học về git, tôi tiếp tục xem các thuật ngữ HEAD, master, origin, và tôi không chắc sự khác biệt là gì. Nếu tôi hiểu đúng, HEAD luôn bằng phiên bản mới nhất? Và nếu có, đó là bản sửa đổi mới nhất của toàn bộ kho lưu trữ, hoặc của một chi nhánh hoặc thẻ cụ thể? Điều này rất khó hiểu. Tôi đã đọc rất nhiều hướng dẫn về điều này và những thứ như phân nhánh/hợp nhất, nhưng vẫn không thể quấn đầu của tôi xung quanh nó.Các khái niệm git của HEAD, master, origin là gì?
Trả lời
Tôi rất khuyên bạn nên đọc sách "Pro Git" by Scott Chacon. Hãy dành thời gian và thực sự đọc nó, trong khi khám phá một repo git thực tế như bạn làm.
HEAD: hiện tại cam kết repo của bạn đang bật. Phần lớn thời gian HEAD
trỏ đến cam kết mới nhất trong chi nhánh của bạn, nhưng điều đó không phải là trường hợp. HEAD
thực sự chỉ có nghĩa là "repo của tôi hiện trỏ đến" là gì.
Trong trường hợp cam kết HEAD
đề cập đến không phải là đầu của bất kỳ nhánh nào, điều này được gọi là "đầu tách rời".
master: tên của nhánh mặc định mà git tạo cho bạn khi tạo repo lần đầu tiên. Trong hầu hết các trường hợp, "master" có nghĩa là "nhánh chính". Hầu hết các cửa hàng có tất cả mọi người đẩy để làm chủ, và chủ được coi là quan điểm dứt khoát của repo. Nhưng nó cũng phổ biến cho các nhánh phát hành được tạo ra từ master để phát hành. Repo địa phương của bạn có nhánh chính của riêng nó, hầu như luôn luôn theo chủ của một repo từ xa.
nguồn gốc: tên mặc định mà git cung cấp cho repo từ xa chính của bạn. Hộp của bạn có repo riêng của nó, và bạn rất có thể đẩy ra một số repo từ xa mà bạn và tất cả đồng nghiệp của bạn thúc đẩy. Đó là repo từ xa gần như luôn luôn được gọi là nguồn gốc, nhưng nó không phải là.
HEAD
là khái niệm chính thức về git. HEAD
luôn có ý nghĩa rõ ràng. master
và origin
là các tên thường được sử dụng trong git, nhưng chúng không nhất thiết phải như vậy.
HEAD
không phải là bản sửa đổi mới nhất, đây là phiên bản hiện tại. Thông thường, đó là bản sửa đổi mới nhất của chi nhánh hiện tại, nhưng nó không nhất thiết phải như vậy.
master
là tên thường được đặt cho chi nhánh chính, nhưng nó có thể được gọi là bất kỳ thứ gì khác (hoặc có thể không có nhánh chính).
origin
là tên thường được cung cấp cho điều khiển từ xa chính. từ xa là một kho lưu trữ khác mà bạn có thể kéo và đẩy đến. Thông thường nó trên một số máy chủ, như github.
Bạn có thể đưa ra ví dụ về thời điểm HEAD là hiện tại nhưng không phải là mới nhất? Tôi chưa bao giờ thấy điều đó trước đây. Hoặc bạn có nghĩa là nó có thể không phải là mới nhất bởi vì chi nhánh của bạn là đằng sau các chi nhánh từ xa nó theo dõi? –
@MattGreer: Nếu bạn kiểm tra một cái gì đó cũ hơn (chẳng hạn như một thẻ như 'git checkout v1.1') thì HEAD của bạn sẽ thay đổi thành cam kết của thẻ đó. Nó có thể không phải là cam kết mới nhất. –
Trong khi điều này không trực tiếp trả lời câu hỏi, có sách tuyệt vời miễn phí sẽ giúp bạn tìm hiểu các khái niệm cơ bản được gọi là ProGit. Nếu bạn muốn phiên bản gỗ chết đến một bộ sưu tập các bit, bạn có thể mua nó từ Amazon.
Trong khi liên kết này có thể trả lời câu hỏi, tốt hơn nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở thành không hợp lệ nếu trang được liên kết thay đổi. – nha
- 1. git merge origin/master làm gì?
- 2. Sự khác biệt giữa 'git log origin/master' vs 'git log origin/master ..'
- 3. Sự khác nhau giữa git pull origin master & git pull origin/master
- 4. git fetch, FETCH_HEAD và origin/master
- 5. Khái niệm sủi bọt là gì?
- 6. Khái niệm đằng sau R.java là gì?
- 7. "git push origin master" đóng băng
- 8. Khái niệm về Array.map là gì?
- 9. Git Diff giữa HEAD và SVN Master
- 10. Khái niệm swimlane trong YouTrack là gì?
- 11. Git. HEAD từ xa là mơ hồ
- 12. Việc sử dụng `-u` trong` git push -u origin master` là gì?
- 13. Hiểu các khái niệm cơ bản về Git và GitHub
- 14. Chi nhánh git của tôi đang hiển thị 'origin/master' và 'origin/HEAD' trong Sourcetree và tôi không biết cách hợp nhất hai số
- 15. Khái niệm về git tracking và git staging
- 16. Khái niệm chung đằng sau XSS là gì?
- 17. Khái niệm cơ bản đằng sau WaitHandle là gì?
- 18. Khái niệm về một hội trong .NET là gì?
- 19. Khái niệm chụp nhanh trong phi tiêu là gì?
- 20. Khái niệm di dời có nghĩa là gì?
- 21. Kết quả của `git push origin` là gì?
- 22. Git pull origin/master branch đến địa phương/master, khi ở địa phương/phát triển
- 23. Sự khác biệt giữa `git fetch origin` và` git remote update origin` là gì?
- 24. Git - "Chi nhánh của bạn ở phía trước 'origin/master' bằng 3 commit."
- 25. Các khái niệm: Kênh so với luồng
- 26. Khái niệm kiến trúc mới
- 27. Java khái niệm ý tưởng
- 28. git - Chi nhánh của bạn ở phía trước 'origin/master' bởi 1 cam kết
- 29. Khái niệm đơn hoặc đa luồng trong khu vực của hệ thống tệp là gì?
- 30. Ý nghĩa của khái niệm serialization trong ngôn ngữ lập trình là gì?
Ý bạn là gì bởi "HEAD thực sự chỉ có nghĩa là" repo của tôi hiện trỏ đến "." Nếu có nhiều nhánh trong kho, cái nào là HEAD theo bạn? nếu có 3 nhánh (cùng với master), và một cam kết cần phải được thực hiện trong branchA, HEAD có thể vẫn còn trong cam kết của 'master'. Vì vậy, cái nào là bản sửa đổi mà repo đang chỉ vào lúc này? – OK999