2011-12-23 36 views
88

vì vậy tôi bắt đầu sử dụng Git + GitHub.Làm thế nào để đóng một chi nhánh Git?

Trong nhóm phân phối nhỏ của chúng tôi, mỗi thành viên đang tạo chi nhánh riêng cho từng vấn đề/yêu cầu mà họ được phân bổ.

  1. git branch Issue#1 <-- create this branch
  2. git checkout issue#1 <-- switch over to this branch

tại code code, commit, code, commit, vv ...

sau đó pull request, code-fixup, commit, code, commit .. vv

và CUỐI CÙNG ... yêu cầu kéo được chấp nhận.

Woot.

nhưng .. bây giờ những gì? (...... lúng túng ......)

Người tạo chi nhánh trên máy dev địa phương của họ có cần phải ... đóng cửa chi nhánh không? Một gợi ý là dành cho người dev để xóa nhánh `(... -D ...) và sau đó làm một pull/refresh của master .. mà sau đó sẽ nhận được tất cả các mã chi nhánh của họ.

Hmmmmm ... không chắc chắn - xin vui lòng giúp :)

+14

Chi nhánh trong Git chỉ là nhãn trên một cam kết cụ thể - về cơ bản, nếu bạn không cần nó nữa - chỉ cần xóa "nhánh" đó (nhãn "đó trên cam kết đó). Tại địa phương, chỉ cần làm một vấn đề 'git branch # 1 -d' và đó là tất cả - không có mã nào bị mất, chỉ cần một nhãn bị xóa khỏi kho lưu trữ của bạn –

+1

@marc_s Tôi đề nghị chỉ cần trả lời trong số đó :) – KingCrunch

+0

Vì vậy @marc_s - bạn đang nói rằng thực hành tiêu chuẩn một khi bạn đã finsihed chi nhánh của bạn .. và chi nhánh đã được đẩy .. chúng tôi xóa nó? Điều gì về việc sáp nhập? –

Trả lời

152

Chúng tôi yêu cầu các nhà phát triển yêu cầu trạng thái yêu cầu kéo mà họ muốn chi nhánh xóa. Hầu hết thời gian này là trường hợp. Có những lúc cần một chi nhánh (ví dụ: sao chép các thay đổi sang một nhánh phát hành khác).

ngón tay của tôi đã thuộc lòng quá trình của chúng tôi:

git checkout <feature-branch> 
git pull 
git checkout <release-branch> 
git pull 
git merge --no-ff <feature-branch> 
git push 
git tag -a branch-<feature-branch> -m "Merge <feature-branch> into <release-branch>" 
git push --tags 
git branch -d <feature-branch> 
git push origin :<feature-branch> 

Chi nhánh là cho công việc. Thẻ đánh dấu một địa điểm đúng lúc. Bằng cách gắn thẻ từng nhánh hợp nhất, chúng ta có thể hồi sinh nhánh nếu cần. Các thẻ nhánh đã được sử dụng nhiều lần để xem lại các thay đổi.

+7

Chúng tôi đã thực hiện thay đổi gần đây đối với quy trình của chúng tôi. Sử dụng 'git push --tags' rất nặng và tải xuống tất cả các thẻ. Điều này gây khó khăn cho việc bạn sở hữu các thẻ địa phương. Thay vào đó, chúng ta sử dụng 'git push origin branch- ' để chỉ đẩy một thẻ. –

+0

Vì vậy, dòng cuối cùng, bạn cần phải nhớ sử dụng tên thẻ cho chi nhánh tính năng, mà chúng tôi đã đặt trước đó thành "branch- ", thay vì chỉ . Chính xác? –

+0

@PremierBromanov dòng cuối cùng là để xóa chi nhánh từ xa. Để nhớ thẻ @BillDoor đã sử dụng 'git push --tags'. – Deivide

37

Vâng, chỉ cần xóa các chi nhánh bằng cách chạy git push origin :branchname. Để khắc phục vấn đề mới sau này, hãy rẽ nhánh khỏi chủ nhân một lần nữa.

+3

Điều đó sẽ xóa chi nhánh từ xa, không phải nhánh địa phương. – KingCrunch

+3

Tôi không biết tại sao điều này được điều chỉnh ở -2, đây là câu trả lời đúng. Họ chắc chắn có một chi nhánh từ xa, làm thế nào khác họ có thể ban hành một PR chống lại nó? –

+1

@PaulBetts Tôi đồng ý. Tôi cũng bình chọn nó. – gilligan

34

sau khi hoàn tất các mã đầu tiên sáp nhập chi nhánh để làm chủ sau đó xóa mà chi nhánh

git checkout master 
git merge <branch-name> 
git branch -d <branch-name> 
+0

và đây là trên máy dev của riêng tôi, phải không? người chính chấp nhận bất kỳ mã mới nào .. máy của anh ta ở nơi khác. –

+2

Nếu ai đó đang thực hiện hợp nhất, anh ấy có con trỏ nhánh của bạn trong một điều khiển từ xa riêng biệt, ví dụ: tên người gửi/chi nhánh. Anh ta sẽ cần sử dụng 'git remote prune sender' để thoát khỏi nó sau khi bạn đã làm - mặc dù trong hầu hết các trường hợp, anh ta không cần quan tâm. –

+1

* Bạn * không bao giờ nên hợp nhất nhánh của riêng bạn trừ khi bạn là người chịu trách nhiệm tích hợp nó trong cây chính. Nếu bạn không và bạn yêu cầu người khác tích hợp nó, hãy cập nhật nhánh chính của bạn với các cam kết từ xa mới - chúng sẽ chứa bất cứ thứ gì bạn yêu cầu được kéo - và sau đó xóa nhánh của bạn. Điều này đảm bảo bạn sẽ không gặp bất kỳ vấn đề gì nếu người kia thay đổi mọi thứ. – ThiefMaster

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