2016-03-11 25 views
5

Giả sử tôi có lịch sử cam kết với 5 lần commit. Tôi biết rằng tôi có thể rebase cam kết của tôi tại địa phương khi thực hiện một yêu cầu kéo mà sau đó sẽ có họ rebased vào một cam kết duy nhất.Github squash cam kết từ giao diện web trên yêu cầu kéo sau khi nhận xét đánh giá?

Một trường hợp sử dụng chung cho điều này là:

  • Hãy địa phương cam kết, làm việc trên tính năng
  • Squash cam
  • Make Kéo Yêu cầu
  • Nhận xét bình luận của
  • Cập nhật PR một cách thích hợp

Tôi có thể làm điều này tại địa phương trên ma của tôi chine và sau đó đẩy thay đổi của tôi một lần nữa (sử dụng-f kể từ khi rebase làm cho nó ra khỏi đồng bộ với điều khiển từ xa). Đây là loại gây phiền nhiễu.

Tuy nhiên, điều này đòi hỏi rằng tôi làm một rebase mỗi lần tôi giải quyết ý kiến ​​đánh giá - là có cách nào tôi có thể làm điều này từ giao diện web?

Hoặc có thể quy trình làm việc của tôi sai, tôi có nên sửa đổi từng "nhận xét đánh giá" của mình cam kết trực tiếp vào cam kết PR chính không?

Trả lời

5

Bạn không phải thực hiện bất kỳ việc rebase/squashing nào tại địa phương nữa: chỉ cần đẩy cam kết của bạn đến chi nhánh PR của bạn.

Chủ sở hữu của repo ban đầu, nếu anh/cô ấy đã chọn để, sẽ dẹp những cam kết cho bạn (kể từ tháng 3 năm 2016):

https://help.github.com/assets/images/help/pull_requests/squash-and-merge.png

Xem "Squash your commits" và the documentation: nó cho phép một quy trình làm việc mới, cả cho bạn người đóng góp và người duy trì bản repo gốc.

Như tôi đã bình luận dưới đây: nó sẽ được thực hiện như việc hợp nhất của một PR được thực hiện:

  • Nếu nó hoạt động không có xung đột, hợp nhất (hoặc ở đây, merge --squash: xem "In git, what is the difference between merge --squash and rebase?") sẽ được được tạo tự động.
  • Nếu có bất kỳ xung đột nào, hợp nhất không được tạo và người duy trì có tùy chọn từ chối ngay bây giờ cho PR, yêu cầu người đóng góp thực hiện công việc nghiền nát các cam kết và sửa đổi PR.

Điều này thực sự giống như những gì hiện có, ngoại trừ GitHub đã thêm --squash vào lệnh hợp nhất của chúng. Chỉ có bấy nhiêu thôi.

+0

Chúng tôi đã nói về điều này tại nơi làm việc ngày hôm qua - nó không phải là một trò đùa tháng tư Fools? :) Tôi tò mò làm thế nào nó sẽ làm việc, bởi vì nếu nó là cơ bản rebasing thì nó sẽ yêu cầu tất cả các cam kết trung gian của bạn để thành công rebase tự động (và không yêu cầu kết hợp thủ công). Nếu nó chỉ cần "trạng thái cuối cùng" vs "trạng thái ban đầu" và làm một diff? Đó là tốt. – enderland

+0

@enderland Nó không phải là một kẻ ngốc tháng tư thực sự! GitHub phải lắng nghe sau tập https://github.com/dear-github/dear-github. – VonC

+0

Vâng. Tôi chỉ quan tâm nó sẽ không hoạt động tốt trong thực tế nếu nó đang làm một hoạt động rebase/squash ... – enderland

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