2017-06-22 19 views
6

Khi tôi viết mã, tôi chia nhỏ thành các thay đổi nhỏ gọn dễ dàng và nhanh chóng để xem xét.Làm thế nào để sửa lỗi cam kết trong yêu cầu kéo GitHub, bị hỏng bởi git rebase?

Để làm như vậy, tôi sử dụng git rebase -i (tương tác) để bí, thả và thay đổi thứ tự các cam kết.

Tôi nhận thấy điều này đôi khi dẫn đến một thứ tự cam kết khác nhau về yêu cầu kéo GitHub (mặc dù thứ tự được giữ lại trên nhánh từ xa).

Ví dụ,

  • cam kết 1
  • cam 2
  • cam kết 3

có thể hiển thị trong PR như:

  • cam kết 3
  • c ommit 1
  • cam 2

Tôi đã tìm kiếm Internet và chỉ được quản lý để tìm trang trợ giúp GitHub này: Why are my commits in the wrong order? câu trả lời của họ:

Nếu bạn viết lại lịch sử cam kết của bạn thông qua git rebase hay đẩy mạnh, bạn có thể nhận thấy rằng chuỗi cam kết của bạn không hoạt động khi mở yêu cầu kéo .

GitHub nhấn mạnh các yêu cầu kéo làm không gian để thảo luận. Tất cả các khía cạnh của nó - nhận xét, tham chiếu và cam kết - được trình bày theo thứ tự thời gian . Viết lại lịch sử cam kết Git của bạn while performing rebases thay đổi liên tục không gian-thời gian, có nghĩa là rằng các cam kết có thể không được thể hiện theo cách bạn mong đợi trong giao diện GitHub .

Nếu bạn luôn muốn xem các cam kết theo thứ tự, chúng tôi khuyên bạn không nên sử dụng git rebase. Tuy nhiên, hãy yên tâm rằng không có gì bị hỏng khi bạn xem mọi thứ bên ngoài thứ tự thời gian!

Có cách nào để giải quyết vấn đề này không?

+0

Tôi nghĩ bạn đã đạt được nguồn thông tin khá tốt. Tôi tin rằng nhân viên github biết khá nhiều về github và sẽ rất khó để tìm một người biết nhiều hơn. Vì vậy, nếu [github help] (https://help.github.com/articles/why-are-my-commits-in-the-wrong-order/) cho bạn biết rằng cách duy nhất để xem các cam kết theo thứ tự là không sử dụng 'git rebase' có lẽ không có ** workarround khác **. –

+1

@ running.t vui lòng xem câu trả lời của tôi. :) – Eliad

+1

về "GitHub nhấn mạnh các yêu cầu kéo như một không gian để thảo luận" từ kinh nghiệm của tôi, trang cam kết bị cùng một vấn đề. tất cả các cam kết được sắp xếp theo thời gian tạo. Có cam kết hợp nhất được trộn lẫn bên trong cây cam kết "gốc" (được hợp nhất trước) – eplaut

Trả lời

4

tôi đã quản lý để làm việc xung quanh này bằng cách:

  1. Xác định vị trí cam kết lần cuối mà vẫn giữ trật tự
  2. Run git rebase -i <hash of that commit>
  3. Thay thế tất cả pick với reword
  4. Run git push -f

Trước đó, tôi đã thử thay đổi chỉ thông báo cam kết đầu tiên, cũng thay đổi tất cả các băm sau, nhưng điều đó không khắc phục được.

Tôi phải làm điều đó cho mọi cam kết sau đây để nó hoạt động.

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