ลบไฟล์ที่แก้ไขจากคำขอดึง


120

ฉันมีไฟล์ที่แก้ไข 3 ไฟล์ (ไม่มีไฟล์ใหม่) ในคำขอดึงข้อมูลในขณะนี้

ฉันต้องการลบหนึ่งในไฟล์เหล่านั้นออกจากคำร้องขอดึงเพื่อให้คำร้องขอดึงมีการเปลี่ยนแปลงกับไฟล์สองไฟล์เท่านั้นและปล่อยไฟล์ที่สามไว้ในสถานะเดิม

ฉันได้ลองสองสามสิ่งแล้ว (ตรวจสอบเวอร์ชันดั้งเดิมของไฟล์ ฯลฯ ... ) แต่ยังคงแสดงเป็นไฟล์ที่เปลี่ยนแปลงใน PR

มีวิธีแก้ปัญหานี้หรือไม่?


หากการแก้ไขไฟล์อยู่ในการคอมมิตของตัวเองคุณสามารถทำการ rebase แบบโต้ตอบและลบคอมมิตที่มีผลต่อไฟล์ที่คุณต้องการไม่เปลี่ยนแปลงจากนั้นทำการบังคับไปที่สาขาของคุณ Github ควรตรวจพบโดยอัตโนมัติ
Dentych

คำตอบ:


272

สลับไปยังสาขาที่คุณสร้างคำขอดึง:

$ git checkout pull-request-branch

เขียนทับไฟล์ที่แก้ไขด้วยไฟล์ในสาขาอื่นลองพิจารณาว่าเป็นไฟล์หลัก :

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

กระทำและส่งไปที่รีโมท:

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

4
ไม่ทำงานแสดงข้อผิดพลาด: pathspec '{file / path.js}' ไม่ตรงกับไฟล์ใด ๆ ที่ git รู้จัก
raftaar1191

9
มันใช้งานได้และได้รับการพิสูจน์แล้วเพียงแค่ตรวจสอบเส้นทางของคุณให้ถูกต้อง
Pavan T

2
สิ่งนี้ใช้ได้กับไฟล์รอบ ๆ ไฟล์ฉันต้องการดำเนินการกับ ... ดังนั้นฉันไม่คิดว่ามีบางอย่างผิดปกติกับเส้นทาง
Tim Boland

1
ในกรณีที่ผู้ที่มีปัญหาเกี่ยวกับข้อผิดพลาด: pathspec '{file / path.js}' ไม่ตรงกับไฟล์ใด ๆ ที่ git ทราบ ฉันได้รับเมื่อพยายามรีเซ็ตไฟล์ที่ไม่มีอยู่ในต้นทาง / สาขาหลัก
Dmitry Malugin

1
@ArpitAggarwal นี่ใช้งานได้ดี ขอบคุณมาก.
Deadpool

11

คุณต้องการแก้ไขข้อผูกพันจากนั้นทำการบังคับซึ่งจะอัปเดตสาขาด้วย PR

นี่คือวิธีที่ฉันแนะนำให้คุณทำสิ่งนี้:

  1. ปิด PR เพื่อให้ใครก็ตามที่กำลังตรวจสอบอยู่จะไม่ดึงมันเข้ามาจนกว่าคุณจะทำการเปลี่ยนแปลง
  2. ทำการซอฟต์รีเซ็ตเป็นคอมมิตก่อนการเปลี่ยนแปลงที่คุณไม่ต้องการ (หากนี่เป็นการคอมมิตสุดท้ายที่คุณสามารถใช้ได้git reset --soft HEAD^หรือถ้าเป็นการคอมมิตอื่นคุณจะต้องแทนที่ 'HEAD ^' ด้วยรหัสคอมมิต)
  3. ยกเลิก (หรือเลิกทำ) การเปลี่ยนแปลงใด ๆ ในไฟล์ที่คุณไม่ได้ตั้งใจจะอัปเดต
  4. สร้างคอมมิตใหม่ git commit -a -c ORIG_HEAD
  5. บังคับให้กดไปที่สาขาของคุณ
  6. เปิดคำขอดึงอีกครั้ง

เมื่อสาขาของคุณได้รับการอัปเดตแล้ว Pull Request จะรวมการเปลี่ยนแปลงของคุณ

นี่คือเชื่อมโยงไปยังเอกสารเบื๊อกที่พวกเขามีตัวอย่างที่ดีงามภายใต้การยกเลิกการกระทำและการทำซ้ำ


0

การลบไฟล์ออกจากคำขอดึง แต่ไม่ใช่จากที่เก็บในเครื่องของคุณ

  1. ไปที่สาขาของคุณจากจุดที่คุณสร้างคำขอโดยใช้คำสั่งต่อไปนี้

git checkout - c: \ temp ..... next git checkout origin / master - c: \ temp ... u แทนที่ origin / master ด้วยสาขาอื่น คอมมิตถัดไป -mc: \ temp ..... จุดเริ่มต้นของการพุชคอมไพล์ถัดไป

หมายเหตุ: ไม่มีเครื่องหมายคำพูดเดี่ยวหรือเครื่องหมายคำพูดคู่สำหรับเส้นทางไฟล์


-5

คำขอดึงเป็นเพียงคำขอที่จะรวมสาขาหนึ่งเข้ากับอีกสาขาหนึ่ง

คำขอดึงของคุณไม่ "มี" อะไรเลยเป็นเพียงเครื่องหมายบอกว่า "โปรดรวมสาขานี้เป็นสาขานั้น"

ชุดการเปลี่ยนแปลงที่ PR แสดงใน UI ของเว็บเป็นเพียงการเปลี่ยนแปลงระหว่างสาขาเป้าหมายและสาขาคุณลักษณะของคุณ ในการแก้ไขคำขอดึงของคุณคุณต้องปรับเปลี่ยนสาขาคุณลักษณะของคุณโดยอาจใช้แรงผลักไปยังสาขาคุณลักษณะ

ในกรณีของคุณคุณอาจต้องการแก้ไขข้อผูกพันของคุณ ไม่แน่ใจเกี่ยวกับสถานการณ์ที่แน่นอนของคุณ แต่การรวมกันของ rebase แบบโต้ตอบและadd -pควรแยกออก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.