Xóa tệp đã sửa đổi khỏi yêu cầu kéo


102

Tôi có 3 tệp đã sửa đổi (không có tệp mới) trong một yêu cầu kéo vào lúc này.

Tôi muốn xóa một trong những tệp đó khỏi yêu cầu kéo, để yêu cầu kéo chỉ chứa các thay đổi đối với hai tệp và để tệp thứ ba ở trạng thái ban đầu, nguyên bản.

Tôi đã thử một vài thứ (kiểm tra phiên bản gốc của tệp, v.v.) nhưng nó vẫn hiển thị là tệp đã thay đổi trong PR.

Có một giải pháp cho điều này?


Nếu các sửa đổi đối với tệp nằm trong (các) cam kết của riêng chúng, bạn có thể thực hiện rebase tương tác và xóa (các) cam kết ảnh hưởng đến tệp mà bạn muốn không thay đổi, sau đó thực hiện một lực đẩy đến nhánh của bạn. Github sẽ tự động phát hiện điều đó.
Dentych

Câu trả lời:


238

Chuyển sang nhánh mà bạn đã tạo yêu cầu kéo:

$ git checkout pull-request-branch

Ghi đè (các) tệp đã sửa đổi bằng tệp trong nhánh khác, hãy coi đó là tệp chính :

git checkout origin/master -- src/main/java/HelloWorld.java

Cam kết và đẩy nó đến điều khiển từ xa:

git commit -m "Removed a modified file from pull request"
git push origin pull-request-branch

4
Không hoạt động hiển thị cho tôi lỗi: pathspec '{file / path.js}' không khớp với bất kỳ (các) tệp nào được biết đến với git.
raftaar1191

8
Nó đang hoạt động và giải pháp đã được chứng minh chỉ cần kiểm tra đường dẫn của bạn một cách chính xác
Pavan T

2
điều này hoạt động đối với các tệp xung quanh tệp mà tôi thực sự muốn thực hiện hành động trên ... vì vậy tôi không nghĩ rằng nó có gì đó sai với đường dẫn
Tim Boland

Với phương pháp này, bạn ghi đè lên tệp nên bạn sẽ mất công việc đã thực hiện trên tệp đó, phải không? Bạn không thể giữ nó cho một chi nhánh khác và / hoặc một PR khác?
Ernest Jones,

1
@ArpitAggarwal điều này đang hoạt động tốt. Cảm ơn bạn rất nhiều.
Chaklader Asfak Arefe

10

Bạn muốn sửa đổi cam kết và sau đó thực hiện một lực đẩy sẽ cập nhật chi nhánh với PR.

Đây là cách tôi khuyên bạn nên làm điều này:

  1. Đóng PR để bất kỳ ai đang xem xét nó không kéo nó vào cho đến khi bạn thực hiện các thay đổi của mình.
  2. Thực hiện Đặt lại mềm cho cam kết trước thay đổi không mong muốn của bạn (nếu đây là cam kết cuối cùng bạn có thể sử dụng git reset --soft HEAD^hoặc nếu đó là một cam kết khác, bạn sẽ muốn thay thế 'HEAD ^' bằng id cam kết)
  3. Hủy (hoặc hoàn tác) bất kỳ thay đổi nào đối với tệp mà bạn không định cập nhật
  4. Thực hiện một cam kết mới git commit -a -c ORIG_HEAD
  5. Buộc đẩy đến chi nhánh của bạn
  6. Mở lại Yêu cầu Kéo

Bây giờ chi nhánh của bạn đã được cập nhật, Yêu cầu kéo sẽ bao gồm các thay đổi của bạn.

Đây là một liên kết đến tài liệu Gits nơi họ có một ví dụ khá tốt trong Hoàn tác cam kết và làm lại .


-5

Một yêu cầu kéo chỉ là: một yêu cầu hợp nhất một nhánh vào một nhánh khác.

Yêu cầu kéo của bạn không "chứa" bất cứ thứ gì, nó chỉ là một điểm đánh dấu cho biết "vui lòng hợp nhất nhánh này vào nhánh kia".

Tập hợp các thay đổi mà PR hiển thị trong giao diện người dùng web chỉ là những thay đổi giữa nhánh mục tiêu và nhánh tính năng của bạn. Để sửa đổi yêu cầu kéo của bạn, bạn phải sửa đổi nhánh tính năng của mình, có thể bằng một lực đẩy đến nhánh tính năng.

Trong trường hợp của bạn, bạn có thể muốn sửa đổi cam kết của mình. Không chắc chắn về tình huống chính xác của bạn, nhưng một số kết hợp của rebase tương tác và add -psẽ giúp bạn loại bỏ.

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.