ฉันมีที่เก็บโลคัล 2 git ทั้งคู่ชี้ไปที่ที่เก็บรีโมตเดียวกัน
ในที่เก็บ git หนึ่งถ้าฉันทำได้ฉันจะgit format-patch 1
ใช้โปรแกรมแก้ไขนั้นกับที่เก็บอื่นได้อย่างไร
ฉันมีที่เก็บโลคัล 2 git ทั้งคู่ชี้ไปที่ที่เก็บรีโมตเดียวกัน
ในที่เก็บ git หนึ่งถ้าฉันทำได้ฉันจะgit format-patch 1
ใช้โปรแกรมแก้ไขนั้นกับที่เก็บอื่นได้อย่างไร
คำตอบ:
หมายเหตุ: คุณสามารถดูตัวอย่างก่อนว่าแพทช์ของคุณจะทำอะไร:
อันดับแรกคือ:
git apply --stat a_file.patch
จากนั้นเรียกใช้แบบแห้งเพื่อตรวจหาข้อผิดพลาด:
git apply --check a_file.patch
ในที่สุดคุณสามารถใช้git am
เพื่อใช้แพทช์ของคุณเป็นการกระทำ: มันช่วยให้คุณสามารถออกจากแพทช์ที่ใช้
สิ่งนี้มีประโยชน์สำหรับการอ้างอิงในภายหลัง
git am --signoff < a_file.patch
ในบันทึกการคอมไพล์ของคุณคุณจะพบว่าข้อความยืนยันมีแท็ก“ ลงชื่อออกโดย” แท็กนี้จะถูกอ่านโดย Github และอื่น ๆ เพื่อให้ข้อมูลที่เป็นประโยชน์เกี่ยวกับวิธีการส่งมอบสิ้นสุดลงในรหัส
git am < somepatch.patch
ให้ผล "ร้ายแรง: ชื่อ ident ว่างเปล่า (สำหรับ <>) ไม่อนุญาต" บางคนสามารถอธิบายให้ฉันทำไม
Author
หัวในแพทช์และ / git config user.{name,email}
หรือคุณไม่ได้
git apply --check
พูดpatch does not apply
และgit apply -3
พูดว่าrepository lacks the necessary blob to fall back on 3-way merge.
ในคอมไพล์การทำซ้ำการกระทำเป็นเรื่องง่าย แต่คนจะรีบูตแพทช์ของพวกเขาที่ด้านบนของรหัสปรับปรุง?
git apply name-of-file.patch
หรือถ้าคุณเตะมันที่โรงเรียนเก่า:
cd /path/to/other/repository
patch -p1 < 0001-whatever.patch
ก่อนอื่นคุณควรจดบันทึกเกี่ยวกับความแตกต่างระหว่างgit am
และgit apply
เมื่อคุณกำลังใช้git am
คุณมักจะต้องการที่จะใช้แพทช์จำนวนมาก ดังนั้นควรใช้:
git am *.patch
หรือเพียงแค่:
git am
Git จะค้นหาแพตช์โดยอัตโนมัติและนำไปใช้ตามลำดับ ;-)
UPD ที่
นี่คุณสามารถค้นหาวิธีสร้างแพตช์ดังกล่าว
git apply
.. และใน--reverse
:-) 👍
หากคุณใช้ JetBrains IDE (เช่น IntelliJ IDEA, Android Studio, PyCharm) คุณสามารถลากไฟล์แพตช์และวางมันลงใน IDE และไดอะล็อกจะปรากฏขึ้นเพื่อแสดงเนื้อหาของแพทช์ สิ่งที่คุณต้องทำตอนนี้คือคลิกที่ "ใช้ชุดข้อมูลแก้ไข" และการส่งมอบจะถูกสร้างขึ้น
คุณสามารถใช้ cmd ที่ระบุด้านล่าง
git apply fileName.patch