Câu hỏi Làm thế nào để thay đổi nhánh cơ sở của một yêu cầu kéo?


Tôi đã tạo một yêu cầu kéo về dự án trên GitHub đến một nhánh từ xa cụ thể. Sau một thời gian, nhánh từ xa đã bị xóa.

Làm thế nào tôi có thể thay đổi yêu cầu kéo để trỏ đến một chi nhánh khác (cụ thể là master)?


76
2018-04-09 23:15


gốc


Cũng được yêu cầu tại: github.com/isaacs/github/issues/18, thư được gửi tới GitHub và tiêu chuẩn "chúng tôi sẽ thêm vào trả lời lỗi nội bộ của chúng tôi" đã nhận được. - Ciro Santilli 新疆改造中心 六四事件 法轮功
github.com/blog/2224-change-the-base-branch-of-a-pull-request - Jacob Lowe


Các câu trả lời:


Cập nhật: như Michael ghi chú bên dưới, điều này bây giờ có thể:

Bây giờ bạn có thể thay đổi nhánh cơ bản của một yêu cầu kéo mở. Sau khi tạo yêu cầu kéo, bạn có thể sửa đổi nhánh gốc sao cho các thay đổi trong yêu cầu kéo được so sánh với một nhánh khác. Bằng cách thay đổi nhánh nền của yêu cầu kéo ban đầu của bạn thay vì mở một nhánh mới với nhánh gốc chính xác, bạn sẽ có thể giữ cho công việc và thảo luận có giá trị.

Nhấn vào Chỉnh sửa bằng tiêu đề của yêu cầu kéo để hiển thị bộ chọn nhánh cơ sở.

An animated example of how to change a pull request's base branch.


Câu trả lời cũ

Bạn không thể. Chỉ cần thực hiện một yêu cầu kéo mới.


74
2018-04-09 23:18



thẳng vào vấn đề, nhưng không đúng - xem điều này câu trả lời. - Tom
Dựa vào chức năng API không có giấy tờ (và có khả năng không chủ ý) là một công thức cho nỗi buồn xuống dòng. - Amber
Không ai nói gì về dựa vào về chức năng API không có giấy tờ. Câu hỏi này yêu cầu giải quyết cho vấn đề một lần, không phải là giải pháp liên tục được hỗ trợ vĩnh viễn. Bất kể, để nói rằng "Bạn không thể" chỉ đơn giản là không đúng sự thật. - Tom
Dù bằng cách nào thì API không có giấy tờ bị hỏng ngay bây giờ (xem bình luận của câu trả lời khác), và điều đó khá buồn. - dequis
Kể từ ngày 15.08.2016, bạn có thể. Xem câu trả lời của Michael. - maliayas


Mặc dù không có giấy tờ, bạn có thể làm điều này bằng cách sử dụng API REST GitHub.

Việc sử dụng API được giải thích trong câu trả lời này, nhưng về cơ bản bạn có thể đưa ra một yêu cầu REST như thế này:

$ curl --user "tom" \
       --request PATCH \
       --data '{"issue": "15", "head": "tom:new-branch", "base": "master"}' \
       https://api.github.com/repos/fred/fabproj/pulls

Điều này sẽ thay đổi yêu cầu kéo được thể hiện bằng số 15 trên fred/fabproj repo để sử dụng new-branch chi nhánh trên tom/fabproj cái nĩa.

Chỉnh sửa: Lưu ý: theo nhận xét, ở trên chỉ dành cho gắn một Mới kéo yêu cầu đến một vấn đề hiện tại.


36
2017-08-16 09:07



Không thể làm cho nó hoạt động. Nó phàn nàn rằng lĩnh vực đó issue có giá trị không chính xác, có thể gợi ý rằng bạn không thể thay đổi các yêu cầu kéo đã được tạo trước đó nữa. Xấu hổ. - mxcl
Bạn có chắc là bạn đã nhận được cuộc gọi API của mình đúng không? Theo như tôi có thể nói, điều này vẫn nên hoạt động, và được (kinda) tài liệu. Xem developer.github.com/v3/pulls (và tìm kiếm "Tạo yêu cầu kéo" rồi xem "Phương thức nhập thay thế") - Tom
Tôi đã thử điều này một lần nữa ngày hôm nay, và có thể xác nhận rằng nó không còn hoạt động nữa. Tôi sẽ tiếp tục khám phá các API REST với hy vọng khám phá ra một cách khác để làm điều này. - Tom
Theo tài liệu dành cho nhà phát triển, loại yêu cầu nên bt PATCH. Điều khác là sửa đổi đầu / cơ sở không được hỗ trợ tại thời điểm này. Tham khảo: developer.github.com/v3/pulls/#update-a-pull-request - Shekhar
Hey Jian, như Tom đã đề cập trong các bình luận vào ngày 13/12 ', đây là (thật đáng buồn!) Không còn làm việc nữa ... đó là một sự xấu hổ, vì tôi đã có thể sử dụng nó ngày hôm nay, nhưng than ôi! - pvandenberk


Tính đến ngày 15 tháng 15 năm 2016, điều này hiện có thể thực hiện qua Github:

Bây giờ bạn có thể thay đổi nhánh cơ bản của một yêu cầu kéo mở. Sau khi tạo yêu cầu kéo, bạn có thể sửa đổi nhánh gốc sao cho các thay đổi trong yêu cầu kéo được so sánh với một nhánh khác. Bằng cách thay đổi nhánh nền của yêu cầu kéo ban đầu của bạn thay vì mở một nhánh mới với nhánh gốc chính xác, bạn sẽ có thể giữ cho công việc và thảo luận có giá trị.


18
2017-08-15 19:08



phải là câu trả lời được chấp nhận - timotheecour
cách thức hoạt động của nó là một lần chỉnh sửa tiêu đề, sau đó nút "base:" xuất hiện, sẵn sàng thay đổi. - AnneTheAgile


Tôi có thể thay đổi nhánh mục tiêu. Đúng là chúng ta không thể chỉnh sửa tên của nhánh đích trong PR. Nhưng mẹo là đổi tên nhánh thành cái gì khác, và đổi tên nhánh mục tiêu của bạn thành nhánh hiện tại đã có trong PR.

Ví dụ: PR của tôi có tên như "dev-4.9". Có một nhánh khác có tên là "qa-4.9". Tất cả những gì tôi muốn là "qa-4.9" nên là mục tiêu PR. Các bước: 1 1) Đổi tên chi nhánh "dev-4.9" thành tên khác "original-dev-4.9"

git checkout dev-4.9
git branch -w original-dev-4.9
git push origin original-dev-4.9

2) Đổi tên nhánh "qa-4.9" thành "dev-4.9".

git checkout qa-4.9
git branch -w dev-4.9
git push origin dev-4.9 -f (force push to write entire branch to reflect dev-4.9)

3) Làm mới PR url và xem các cam kết trong qa-4.9 phản ánh trên đó.


2
2017-11-28 14:15





Thay vì mất tất cả các nhận xét được kết nối với PR cho một nhánh bị xóa:

  1. tạo lại nhánh tại địa phương với cùng tên và cùng nội dung mà nhánh bạn muốn hợp nhất;
  2. đẩy nhánh đó để tạo lại nhánh từ xa; và sau đó
  3. mở lại PR cho chi nhánh.

Ví dụ, bạn có một PR đến branch1, được xóa. Bây giờ bạn muốn hợp nhất để nắm vững và giữ lại các nhận xét về PR hiện tại của mình:

  1. git checkout master
  2. git pull
  3. git checkout -b branch1
  4. git push
  5. mở lại PR của bạn thành branch1
  6. khi hợp nhất thành branch1, hợp nhất thành master.

Đây là một chút hacky, nhưng tốt hơn nhiều so với phá hủy rất nhiều ý kiến.


1
2018-02-03 03:48



Tôi đã không làm theo để bắt đầu với chỉ để làm rõ cho người đọc khác (hoặc> = câm như tôi) này là dành cho nếu bạn đang ở trong kiểm soát của repo PR của bạn đã được gửi đến. Tôi đang tìm cách cập nhật PR của mình mà tôi đã gửi cho một dự án mã nguồn mở mà tôi không kiểm soát. - rtpHarry


Github hỗ trợ điều này ngay bây giờ. Nút chỉnh sửa ở đầu bên phải của PR.


0
2018-02-06 07:27





Về lý thuyết ...

bạn phải sử dụng github api.

ví dụ: chỉnh sửa yêu cầu kéo với curl

curl --user "your_github_username" \
     --request PATCH \
     --data '{"title":"newtitle","body":"newbody",...}' \
     https://api.github.com/repos/:owner/:repo/pulls/:number

bạn có thể tìm danh sách dữ liệu được xóa trong github developer doc

ví dụ: thay đổi tên của yêu cầu kéo của tôi

curl --user "jeremyclement" \
     --request PATCH \
     --data '{"title":"allows the control of files and folders permissions."}' \
     https://api.github.com/repos/Gregwar/Cache/pulls/9

nhưng trong thực tế ...

có vẻ như các lĩnh vực head/label và head/ref không thể chỉnh sửa được. Hiện tại, giải pháp duy nhất có vẻ là của Amber


-2
2018-03-27 15:26



Điều này làm gì thêm vào câu trả lời hiện tại? - Léo Lam
Nó xác nhận phản ứng Amber bất chấp Tom. - Jer42
Mà xác nhận rằng câu trả lời này là không cần thiết ở tất cả. Điều này không thêm gì vào các câu trả lời hiện tại. Câu trả lời của Tom đã có một thông báo rằng nó không áp dụng nữa, và các bình luận cũng chỉ ra điều này. - Léo Lam