2016-02-27 18 views
8

Tôi đang làm việc trong repo sạch chỉ với một tệp duy nhất. Tôi là nhà phát triển duy nhất."Chi nhánh này là 1 cam kết trước, 1 cam kết đằng sau chính" trong Github khi đang sử dụng "Mô hình phân nhánh Git thành công"

tôi muốn làm những công việc phát triển phát hành bị Thạc sỹ ở A succesful git branching model vì vậy tôi đã làm:

Lưu ý: Xin vui lòng ghi nhớ rằng tôi có tua đi tắt theo mặc định, vì vậy xem xét tất cả các merge lệnh như merge --no-ff.

Nguồn gốc của tôi là Github.

Trong chủ chi nhánh:

git add . 
git commit -m "Initial commit" 
git push origin master 
git checkout -b develop 

Trong phát triển chi nhánh. Tôi làm một sự thay đổi đến tập tin, sau đó:

git add . 
git commit -m "work in the file" 

tôi đã sẵn sàng để phát hành này như các phiên bản 0,0

git checkout -b release-0.0 develop 

Trong release-0.0 chi nhánh. Tôi thêm số phiên bản vào tệp.

git add .  
git commit -m "Bumped version 0.0" 

Tôi sẵn sàng hợp nhất bản phát hành này thành bản chính.

git checkout master 
git merge release-0.0 -m "Releasing v0.0" 
git tag -a 0.0 -m "Version 0.0" 

... và phát triển.

git checkout develop 
git merge release-0.0 -m "Merge release 0.0 into develop" 

Sau đó, tôi đẩy cả chủphát triển để Github

git push origin master 
git push origin develop 

Khi tôi kiểm tra phát triển chi nhánh tại Github, nó nói:

chi nhánh này là 1 cam kết trước, 1 cam kết đằng sau chủ.

Chi tiết master chi nhánh không có thông báo như vậy.

Tôi có thể làm gì để khắc phục vấn đề này? Cả hai chínhphát triển phải bằng nhau tại thời điểm này, vì chúng được hợp nhất cả hai với release-0.0.

Trả lời

2

Không, nó sẽ không bằng nhau vì bạn đã tắt chuyển tiếp nhanh theo mặc định. Mọi hợp nhất tạo một commit mới và commit hợp nhất có một id khác. Vì vậy, hợp nhất cam kết trong tổng thể không phải là cam kết hợp nhất trong phát triển. Và do đó phát triển có một cam kết không phải trong chủ trong khi tổng thể có một cam kết không phát triển. Do đó thông điệp trong phát triển.

Đối với thông điệp không có trong chủ, đó là vì thông báo đến khi nhánh được so sánh với bản gốc. Vì vậy, nếu bạn so sánh tổng thể với chủ, thông điệp là không cần thiết.

Một giải pháp là bật nhanh về phía trước và tạo rõ ràng các cam kết hợp nhất trong bản phát hành và quảng cáo chính và sau đó tiếp tục phát triển nhanh. Các tùy chọn khác là để rebase phát triển sau mỗi hợp nhất để làm chủ. Làm thế nào bạn muốn đi về nó hoàn toàn là sự lựa chọn cá nhân của bạn tùy thuộc vào quy trình làm việc và mã của bạn.

Ngoài ra thông báo ở đó không phải là điều bạn nên lo lắng miễn là mã trong các nhánh chính xác như bạn muốn.

1

Vì bạn đang sử dụng --no-ff mọi đơn thuần sẽ là một cam kết khác. Khi bạn hợp nhất relese-0.0 vào phát triển và thành thạo, các cam kết hợp nhất sẽ khác nhau. Sau đây là cách nó trông giống như:

commits

Như bạn có thể thấy các chi nhánh phát triển đã một cam kết (Merge phát hành 0.0 vào phát triển) mà không phải là trong (không thể truy cập từ) các bậc thầy và các chi nhánh tổng thể có một cam kết (Phát hành v0.0) không nằm trong nhánh phát triển. Và đó là những gì gihub nói với thông điệp đó và nó là hoàn toàn tốt (nội dung là như nhau, nhưng các cam kết khác nhau).

Nếu bạn muốn sử dụng luồng git, bạn nên xem https://github.com/nvie/gitflow, điều này sẽ giúp bạn rất nhiều.

+0

OP đang sử dụng gitflow – TheGeorgeous

+0

Vâng, tôi chỉ muốn chỉ ra rằng có các tập lệnh trợ giúp (bởi nvie, tác giả của bài đăng trên blog) để giúp bạn bắt đầu. – 1ed

4

Chỉ cần để thêm vào câu trả lời khác:

Bản gốc git-flow chưa được phát triển từ năm 2012, và nó đã được thay thế bởi git-flow AVH edition ở nhiều nơi (kể cả Ubuntu repositoriesGit for Windows).

Một trong những khác biệt được giới thiệu bởi các phiên bản AVH là việc hợp nhất cuối cùng là của chủ * vào phát triển hơn là của phát hành vào phát triển.

Điều này làm cho làm chủ cha mẹ trực tiếp của phát triển và nên loại bỏ một phần của thư bạn thấy; chỉ "1 cam kết trước" nên duy trì. Nó cũng làm cho nó dễ dàng hơn một chút để xác minh rằng chủ và phát triển đã không phân kỳ do tai nạn.

* Chính xác hơn, đó là thẻ mới (trên chính) được hợp nhất thành phát triển.

Các vấn đề liên quan