Đổi tên chi nhánh khi có yêu cầu kéo


101

Trên Github, bạn có thể thực hiện các yêu cầu kéo để thêm chức năng vào một dự án. Các đóng góp của một người phải nằm trên một nhánh, nếu yêu cầu được chấp nhận, sẽ được hợp nhất vào nhánh chính (hoặc một nhánh tương tự) của dự án.

Bây giờ, tôi đã gửi một yêu cầu kéo trên Github và những đóng góp của tôi nằm trên một nhánh có tên patch-1. Tôi có thể sửa đổi tên của chi nhánh cục bộ bằng cách

git branch -m patch-1 newname

và về nguyên tắc, tôi cũng có thể đổi tên nó trên repo đã chia của tôi trên Github bằng cách làm theo hướng dẫn có trong câu trả lời này . Điều này được thực hiện trong thực tế bằng cách loại bỏ nhánh cũ, patch-1trong trường hợp của tôi và đặt lại nó bằng một tên khác newname.

Nó có được phép đổi tên nhánh patch-1trên kho lưu trữ đã phân nhánh của tôi trên Github khi nó tạo thành một yêu cầu kéo không? Hoặc nó gây ra vấn đề về quản lý yêu cầu kéo?

Có cách nào để đổi tên một nhánh trên kho lưu trữ được phân nhánh trên Github khi nhánh đó là một yêu cầu kéo không?

Câu trả lời:


117

"Đổi tên" một nhánh từ xa trong git, như được chỉ ra bởi liên kết bạn đã cung cấp, thực sự chỉ là xóa một nhánh, sau đó đẩy một nhánh mới với cùng một băm cam kết nhưng một tên mới. Nếu bạn có một yêu cầu kéo đang mở cho bản vá lỗi nhánh-1, khi bạn xóa nhánh đó, yêu cầu kéo sẽ bị đóng.

Vì vậy, không, bạn không thể đổi tên nhánh với một yêu cầu kéo đang mở mà không xóa nhánh và loại bỏ yêu cầu kéo. Tuy nhiên, không có gì ngăn cản bạn làm điều đó, đẩy một nhánh mới với tên mới và tạo một yêu cầu kéo mới.


186
một lý do để không làm như vậy là mất cuộc thảo luận về PR hiện có.
Johnny Everson

6
Tôi không hiểu tại sao lại hạn chế chặt chẽ việc đổi tên nhánh nguồn trên PR. Bahaviour khó chịu tương tự cũng tồn tại trong bitbucket. Một cách tiếp cận khác sẽ là chỉnh sửa PR và thay đổi nhánh nguồn thành một nhánh khác. Người ta có thể nói "nếu bạn thay đổi nhánh nguồn, thì dù sao nó cũng là một PR mới". Về mặt kỹ thuật, có, nhưng cũng không có gì ngăn cản nhà phát triển thiết lập ngược dòng từ một nhánh hoàn toàn khác và sau đó thực hiện a git push -f. PR được cập nhật với một mã hoàn toàn mới và vẫn là PR "cũ".
L. Holanda

31

Câu trả lời ngắn:

Không

Cách tiếp cận khác:

  1. Mở PR mới với một chi nhánh mới (đã đổi tên)
  2. Đóng PR cũ tham chiếu PR mới (ví dụ: Đóng để ủng hộ #new_pr_id)
  3. Sửa đổi mô tả của PR mới (ví dụ: Supersedes #old_pr_id)
  4. (tùy chọn) Đưa ra nhận xét về cuộc thảo luận có liên quan về bài PR cũ

Ghi chú:

Tên của chi nhánh từ xa (cấu thành PR) cần thay đổi, vì hệ thống xây dựng cần tên của chi nhánh kết thúc bằng ID vé. Tuy nhiên, PR đã được mở trước khi tạo vé chính thức (từ thông số kỹ thuật) và đã chứa đựng những cuộc thảo luận có giá trị. Cách tiếp cận được mô tả là cách duy nhất để làm cho hệ thống xây dựng hoạt động và cũng không làm mất bất kỳ thông tin nào (mặc dù có thêm một bước để theo dõi nó).


9
Các chi nhánh thường bị xóa sau khi hợp nhất, tôi nghĩ tốt hơn là nên "chịu đựng" tên không chính xác trong một thời gian hơn là thêm nội dung PR mới đề cập đến PR cũ nhằm mục đích theo dõi các cuộc thảo luận lịch sử.
Neo
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.