Làm thế nào để đóng Git Branch?


112

vì vậy tôi đang bắt đầu sử dụng Git + GitHub.

Trong nhóm phân tán nhỏ của chúng tôi, mỗi thành viên đang tạo nhánh riêng của họ 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

hiện nay 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.

Chà.

nhưng .. bây giờ thì sao? (...... khó xử ......)

Người đã tạo nhánh trên máy phát triển cục bộ của họ có cần .. đóng nhánh không? Một gợi ý dành cho người phát triển là xóa nhánh `(... -D ...) và sau đó thực hiện kéo / làm mới tổng thể .. sau đó sẽ nhận được tất cả mã nhánh của họ.

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


16
Một nhánh trong Git chỉ là một nhãn trên một cam kết cụ thể - vì vậy, 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 git branch Issue#1 -dvà đó 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
marc_s 23/12/11

1
@marc_s Tôi đề nghị chỉ cần đưa ra câu trả lời cho nó :)
KingCrunch

Vì vậy, @marc_s - bạn đang nói rằng thông lệ tiêu chuẩn khi bạn đã vây bắt chi nhánh của bạn .. và chi nhánh đã được đẩy .. chúng tôi xóa nó? Sáp nhập thì sao?
Pure.Krome

@ Pure.Krome Ít nhất tôi đã giả định rằng theo "yêu cầu kéo được chấp nhận" ý bạn là nó đã được hợp nhất. Vâng, tất nhiên, tích hợp các thay đổi vào master, develophoặc bất cứ điều gì chi nhánh phát triển của bạn được đặt tên (Merge, rebase (có / không có bí), ...)
KingCrunch

khi tôi nói 'yêu cầu kéo được chấp nhận' .. điều đó xảy ra ở một nơi khác. (tức là. nhà phát triển chịu trách nhiệm phê duyệt tất cả các mã được PR ...). Tôi đã tự hỏi liệu tôi có nên chuyển sang master trên máy dev cục bộ của TÔI và thực hiện hợp nhất không.
Pure.Krome

Câu trả lời:


181

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

Các ngón tay của tôi đã ghi nhớ 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>

Một nhánh là dành cho công việc. Một thẻ đánh dấu một địa điểm trong thời gian. Bằng cách gắn thẻ mỗi hợp nhất nhánh, chúng ta có thể phục hồi một nhánh nếu cần. Các thẻ nhánh đã được sử dụng nhiều lần để xem xét các thay đổi.


8
Chúng tôi đã thực hiện một thay đổi gần đây đối với quy trình của mình. Sử dụng git push --tagslà nặng tay và tải xuống tất cả các thẻ. Điều này khiến bạn khó có thẻ cục bộ của riêng mình. Thay vào đó, chúng tôi sử dụng chỉ git push origin branch-<feature-branch>để đẩy một thẻ.
Bill Door

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

@PremierBromanov dòng cuối cùng là để xóa nhánh từ xa. Hãy nhớ rằng thẻ @BillDoor đã được sử dụng git push --tags.
Chia ra

Kịch bản tuyệt vời !!
Kike Gamboa

41

Có, chỉ cần xóa nhánh bằng cách chạy git push origin :branchname. Để khắc phục sự cố mới sau này, hãy tách nhánh lại từ cái chính.


3
Điều đó sẽ xóa chi nhánh từ xa, không phải chi nhánh cục bộ.
KingCrunch

5
Tôi không biết tại sao điều này được sửa đổi ở -2, đây là câu trả lời chính xác. Họ chắc chắn có một chi nhánh ở xa, làm thế nào khác họ có thể phát hành một PR chống lại nó?
Ana Betts

Nếu bạn làm điều này và sau đó thực hiện git pull, nó sẽ không xóa chi nhánh cục bộ của bạn phải không? (Edit:. Nm, tôi thấy rằng nó rõ ràng không, trừ khi bạn chạy git mận từ xa)
Tim Keating

1
Điều gì xảy ra với lịch sử chi nhánh?
geoidesic

40

sau khi hoàn thành mã đầu tiên hợp nhất nhánh để làm chủ rồi xóa nhánh đó

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

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 .. máy của mình ở nơi khác.
Pure.Krome

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

1
Bạn không bao giờ nên hợp nhất nhánh của riêng mình 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 có 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 phải chứa bất kỳ 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 anh chàng kia thay đổi mọi thứ.
ThiefMaster
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.