git-merge - ออนไลน์ใน Cloud

นี่คือคำสั่ง git-merge ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้เวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

โครงการ:

ชื่อ


git-merge - เข้าร่วมสองประวัติศาสตร์การพัฒนาร่วมกัน

เรื่องย่อ


คอมไพล์ ผสาน [-n] [--stat] [--no-commit] [--squash] [--[no-]แก้ไข]
[-NS ] [-NS ] [-NS[ ]]
[--[no-]rerere-autoupdate] [-m ] [ ...]
คอมไพล์ ผสาน ศีรษะ ...
คอมไพล์ ผสาน --ยกเลิก

DESCRIPTION


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

สมมติว่ามีประวัติต่อไปนี้และสาขาปัจจุบันคือ "มาสเตอร์":

A---B---C หัวข้อ
/
D---E---F---G มาสเตอร์

จากนั้น "git merge topic" จะเล่นซ้ำการเปลี่ยนแปลงที่ทำในหัวข้อของหัวข้อเนื่องจากมันแตกต่าง
จากมาสเตอร์ (เช่น E) จนถึงการคอมมิตปัจจุบัน (C) ที่ด้านบนของมาสเตอร์ และบันทึกผลลัพธ์
ในการคอมมิตใหม่พร้อมกับชื่อของทั้งสองพาเรนต์คอมมิทและข้อความบันทึกจาก
ผู้ใช้อธิบายการเปลี่ยนแปลง

A---B---C หัวข้อ
/
D---E---F---G---H มาสเตอร์

ไวยากรณ์ที่สอง ( ศีรษะ ...) ได้รับการสนับสนุนด้วยเหตุผลทางประวัติศาสตร์ ไม่ได้ใช้
จากบรรทัดคำสั่งหรือในสคริปต์ใหม่ มันเหมือนกับ git merge -m
....

ไวยากรณ์ที่สาม ("git merge --abort") สามารถเรียกใช้ได้ก็ต่อเมื่อการผสานส่งผลให้เกิด
ความขัดแย้ง คอมไพล์ ผสาน --ยกเลิก จะยกเลิกกระบวนการผสานและพยายามสร้างใหม่
สถานะก่อนการรวม อย่างไรก็ตาม หากมีการเปลี่ยนแปลงที่ไม่มีข้อผูกมัดเมื่อการรวมเริ่มต้นขึ้น (และ
โดยเฉพาะอย่างยิ่งหากการเปลี่ยนแปลงเหล่านั้นได้รับการแก้ไขเพิ่มเติมหลังจากเริ่มการรวม) คอมไพล์ ผสาน
--ยกเลิก ในบางกรณีจะไม่สามารถสร้างการเปลี่ยนแปลงเดิม (ก่อนการรวม) ขึ้นใหม่ได้
ดังนั้น:

การเตือน: วิ่ง คอมไพล์ ผสาน กับการเปลี่ยนแปลงที่ไม่ผูกมัดที่ไม่สำคัญคือท้อแท้: ในขณะที่
เป็นไปได้ อาจทำให้คุณอยู่ในสภาพที่ยากจะถอยกลับในกรณีของ a
ขัดกัน

OPTIONS


--กระทำ --ไม่กระทำ
ทำการผสานและส่งมอบผลลัพธ์ สามารถใช้ตัวเลือกนี้เพื่อแทนที่
--ไม่มีข้อผูกมัด

ด้วย --no-commit ทำการผสาน แต่แสร้งทำเป็นว่าการผสานล้มเหลวและไม่มีการคอมมิตอัตโนมัติ
เพื่อให้ผู้ใช้มีโอกาสตรวจสอบและปรับแต่งผลการรวมเพิ่มเติมก่อน
มุ่งมั่น

--แก้ไข, -e, --ไม่แก้ไข
เรียกใช้ตัวแก้ไขก่อนที่จะทำการผสานทางกลที่สำเร็จเพื่อแก้ไข . เพิ่มเติม
ข้อความผสานที่สร้างขึ้นโดยอัตโนมัติ เพื่อให้ผู้ใช้สามารถอธิบายและให้เหตุผลในการผสาน NS
--no-edit option สามารถใช้เพื่อยอมรับข้อความที่สร้างขึ้นโดยอัตโนมัติ (โดยทั่วไปคือ
ท้อแท้) ตัวเลือก --edit (หรือ -e) ยังคงมีประโยชน์หากคุณให้แบบร่าง
ข้อความพร้อมตัวเลือก -m จากบรรทัดรับคำสั่ง และต้องการแก้ไขในตัวแก้ไข

สคริปต์ที่เก่ากว่าอาจขึ้นอยู่กับพฤติกรรมในอดีตที่ไม่อนุญาตให้ผู้ใช้แก้ไข
ข้อความบันทึกการรวม พวกเขาจะเห็นตัวแก้ไขเปิดขึ้นเมื่อเรียกใช้ git merge เพื่อทำ
ง่ายกว่าที่จะปรับสคริปต์ดังกล่าวให้เข้ากับพฤติกรรมที่อัปเดต ตัวแปรสภาพแวดล้อม
GIT_MERGE_AUTOEDIT สามารถตั้งค่าเป็น no ที่จุดเริ่มต้นได้

--ฟ
เมื่อการผสานแก้ไขเป็นการกรอไปข้างหน้า ให้อัปเดตตัวชี้สาขาเท่านั้นโดยไม่ต้อง
การสร้างการรวมคอมมิต นี่เป็นพฤติกรรมเริ่มต้น

--no-ff
สร้างการคอมมิตการผสาน แม้ว่าการผสานจะแก้ไขเป็นการกรอไปข้างหน้า นี้เป็น
ลักษณะการทำงานเริ่มต้นเมื่อรวมแท็กที่มีคำอธิบายประกอบ (และอาจมีการเซ็นชื่อ)

--ff-เท่านั้น
ปฏิเสธที่จะรวมและออกด้วยสถานะที่ไม่ใช่ศูนย์ เว้นแต่ว่า HEAD ปัจจุบันมีอยู่แล้ว
ข้อมูลล่าสุดหรือการรวมสามารถแก้ไขได้อย่างรวดเร็ว

--log[= ], --no-log
นอกจากชื่อสาขาแล้ว ให้เติมข้อความบันทึกด้วยคำอธิบายหนึ่งบรรทัดจาก
ที่มากที่สุด การกระทำจริงที่กำลังถูกรวมเข้าด้วยกัน ดูสิ่งนี้ด้วย git-fmt-ผสานผงชูรส(1)

ด้วย --no-log จะไม่แสดงรายการคำอธิบายหนึ่งบรรทัดจากการคอมมิตจริงที่จะถูกรวมเข้าด้วยกัน

--stat, -n, --no-stat
แสดง diffstat ที่ส่วนท้ายของการผสาน ดิฟสแตทยังถูกควบคุมโดย
ตัวเลือกการกำหนดค่า merge.stat

ด้วย -n หรือ --no-stat จะไม่แสดง diffstat เมื่อสิ้นสุดการรวม

--สควอช --ไม่-สควอช
สร้างแผนภูมิการทำงานและสถานะดัชนีราวกับว่ามีการผสานจริงเกิดขึ้น (ยกเว้น
รวมข้อมูล) แต่อย่าทำการคอมมิต ย้าย HEAD หรือบันทึกจริงๆ
$GIT_DIR/MERGE_HEAD (เพื่อให้คำสั่ง git commit ถัดไปสร้างการรวมคอมมิต)
สิ่งนี้ช่วยให้คุณสร้างการคอมมิตเดียวที่ด้านบนของสาขาปัจจุบันที่มีผลเป็น
เช่นเดียวกับการรวมสาขาอื่น (หรือมากกว่าในกรณีของปลาหมึก)

ด้วย --no-squash ทำการผสานและส่งผลลัพธ์ สามารถใช้ตัวเลือกนี้เพื่อ
แทนที่ --สควอช

-NS , --กลยุทธ์=
ใช้กลยุทธ์การรวมที่กำหนด สามารถจัดหาได้มากกว่าหนึ่งครั้งเพื่อระบุใน
ลำดับที่พวกเขาควรจะลอง หากไม่มีตัวเลือก -s รายการกลยุทธ์ที่มีอยู่แล้วคือ
ใช้แทน (คอมไพล์ ผสาน-เรียกซ้ำ เมื่อรวมหัวเดียว คอมไพล์ ผสานปลาหมึก
มิฉะนั้น).

-NS , --กลยุทธ์-ตัวเลือก=
ส่งผ่านตัวเลือกเฉพาะกลยุทธ์การผสานไปยังกลยุทธ์การผสาน

--verify-ลายเซ็น, --no-verify-ลายเซ็น
ตรวจสอบว่าการคอมมิตที่รวมเข้าด้วยกันมีลายเซ็น GPG ที่ดีและเชื่อถือได้และยกเลิก
การรวมในกรณีที่ไม่ได้

--สรุป --ไม่-สรุป
คำพ้องความหมายกับ --stat และ --no-stat; สิ่งเหล่านี้เลิกใช้แล้วและจะถูกลบออกใน
อนาคต.

-q, --เงียบ
ดำเนินการอย่างเงียบ ๆ หมายถึง -- ไม่มีความคืบหน้า

-v, --เวอร์โบส
ละเอียด.

--ความคืบหน้า --ไม่มีความคืบหน้า
เปิด/ปิดความคืบหน้าอย่างชัดเจน หากไม่ระบุ ความคืบหน้าจะแสดงถ้า
ข้อผิดพลาดมาตรฐานเชื่อมต่อกับเทอร์มินัล โปรดทราบว่ากลยุทธ์การรวมอาจไม่ทั้งหมด
สนับสนุนการรายงานความคืบหน้า

-NS[ ], --gpg-สัญญาณ[= ]
GPG- ลงนามในข้อตกลงการรวมผลลัพธ์ อาร์กิวเมนต์ keyid เป็นทางเลือกและค่าเริ่มต้นเป็น
ตัวตนของผู้มอบอำนาจ; หากระบุไว้จะต้องติดอยู่กับตัวเลือกโดยไม่มีช่องว่าง

-NS
ตั้งค่าข้อความยืนยันที่จะใช้สำหรับการรวมคอมมิต (ในกรณีที่มีการสร้างข้อความนี้)

หาก --log ถูกระบุ shortlog ของคอมมิตที่จะถูกรวมจะถูกผนวกเข้ากับ
ข้อความที่ระบุ

เทศกาล คอมไพล์ FMT-ผสานผงชูรส คำสั่งสามารถใช้เพื่อให้เป็นค่าเริ่มต้นที่ดีสำหรับระบบอัตโนมัติ คอมไพล์
ผสาน การร้องขอ ข้อความอัตโนมัติสามารถรวมคำอธิบายสาขาได้

--[ไม่-]rerere-autoupdate
อนุญาตให้กลไก rerere อัปเดตดัชนีด้วยผลลัพธ์ของ auto-conflict
ความละเอียดถ้าเป็นไปได้

--ยกเลิก
ยกเลิกกระบวนการแก้ไขข้อขัดแย้งในปัจจุบัน และพยายามสร้างการผสานล่วงหน้าขึ้นใหม่
รัฐ

หากมีการเปลี่ยนแปลงเวิร์กทรีที่ไม่มีข้อผูกมัดเมื่อการผสานเริ่มต้นขึ้น คอมไพล์ ผสาน
--ยกเลิก ในบางกรณีจะไม่สามารถสร้างการเปลี่ยนแปลงเหล่านี้ขึ้นใหม่ได้ จึงเป็น
แนะนำให้คอมมิตหรือซ่อนการเปลี่ยนแปลงของคุณก่อนเรียกใช้เสมอ คอมไพล์ ผสาน.

คอมไพล์ ผสาน --ยกเลิก เทียบเท่ากับ คอมไพล์ ตั้งใหม่ --ผสาน เมื่อมี MERGE_HEAD

...
สัญญาซึ่งมักจะเป็นหัวหน้าสาขาอื่น ๆ เพื่อรวมเข้ากับสาขาของเรา ระบุมากกว่า
หนึ่งคอมมิชชันจะสร้างการผสานกับผู้ปกครองมากกว่าสองคน (เรียกด้วยความรักว่า an
ปลาหมึกรวม)

หากไม่มีการคอมมิตจากบรรทัดรับคำสั่ง ให้รวมสาขาการติดตามระยะไกลที่
สาขาปัจจุบันได้รับการกำหนดค่าเพื่อใช้เป็นต้นน้ำ ดูเพิ่มเติมการกำหนดค่า
ของหน้าคู่มือนี้

เมื่อ FETCH_HEAD (และไม่มีการคอมมิตอื่น ๆ ) ถูกระบุ สาขาที่บันทึกไว้ใน
ไฟล์ .git/FETCH_HEAD โดยการเรียกใช้ git fetch ก่อนหน้าสำหรับการผสานรวมเข้ากับ
สาขาปัจจุบัน.

ก่อนการควบรวมกิจการ การตรวจสอบ


ก่อนนำการเปลี่ยนแปลงภายนอกไปใช้ คุณควรได้งานของตัวเองออกมาดีและมีความมุ่งมั่น
ในพื้นที่จึงไม่ถูกปิดล้อมหากมีความขัดแย้ง ดูสิ่งนี้ด้วย git ซ่อน(1) คอมไพล์
ดึง และ คอมไพล์ ผสาน จะหยุดโดยไม่ทำอะไรเลยเมื่อการเปลี่ยนแปลงที่ไม่ผูกมัดในพื้นที่ทับซ้อนกัน
ด้วยไฟล์ที่ คอมไพล์ ดึง/คอมไพล์ ผสาน อาจต้องปรับปรุง

เพื่อหลีกเลี่ยงการบันทึกการเปลี่ยนแปลงที่ไม่เกี่ยวข้องในการคอมมิตการรวม คอมไพล์ ดึง และ คอมไพล์ ผสาน จะยัง
ยกเลิกหากมีการเปลี่ยนแปลงใด ๆ ที่ลงทะเบียนในดัชนีที่เกี่ยวข้องกับการคอมมิทของ HEAD (หนึ่ง
ข้อยกเว้นคือเมื่อรายการดัชนีที่เปลี่ยนแปลงอยู่ในสถานะที่จะเป็นผลมาจาก
รวมกันแล้ว)

หากคอมมิตที่มีชื่อทั้งหมดเป็นบรรพบุรุษของ HEAD แล้ว คอมไพล์ ผสาน จะออกก่อนกับ
ข้อความ "อัปเดตแล้ว"

ไปข้างหน้าอย่างรวดเร็ว ผสาน


บ่อยครั้งที่หัวหน้าสาขาปัจจุบันเป็นบรรพบุรุษของการกระทำที่มีชื่อ นี่เป็นเรื่องธรรมดาที่สุด
กรณีโดยเฉพาะอย่างยิ่งเมื่อเรียกใช้จาก คอมไพล์ ดึง: คุณกำลังติดตามที่เก็บต้นน้ำ คุณ
ไม่มีการเปลี่ยนแปลงในเครื่อง และตอนนี้คุณต้องการอัปเดตเป็นเวอร์ชันอัปสตรีมที่ใหม่กว่า
ในกรณีนี้ ไม่จำเป็นต้องคอมมิตใหม่เพื่อจัดเก็บประวัติที่รวมกัน แทน HEAD
(พร้อมกับดัชนี) ได้รับการอัปเดตให้ชี้ไปที่การคอมมิตที่มีชื่อ โดยไม่ต้องสร้างส่วนพิเศษ
ผสานคอมมิต

พฤติกรรมนี้สามารถระงับได้ด้วยตัวเลือก --no-ff

TRUE ผสาน


ยกเว้นในการรวมแบบกรอไปข้างหน้า (ดูด้านบน) สาขาที่จะรวมจะต้องถูกผูกไว้
ร่วมกันโดยการผสานคอมมิตที่มีทั้งคู่เป็นพ่อแม่

เวอร์ชันที่ผสานรวมจะกระทบยอดการเปลี่ยนแปลงจากทุกสาขาที่จะผสานถูกผูกมัด และ
HEAD, ดัชนี และแผนผังการทำงานของคุณได้รับการอัปเดต สามารถปรับเปลี่ยนได้
ในแผนผังการทำงานตราบเท่าที่ไม่ทับซ้อนกัน การอัปเดตจะเก็บรักษาไว้

เมื่อไม่ชัดเจนว่าจะกระทบยอดการเปลี่ยนแปลงอย่างไร สิ่งต่อไปนี้จะเกิดขึ้น:

1. ตัวชี้ HEAD ยังคงเหมือนเดิม

2. ตัวอ้างอิง MERGE_HEAD ถูกตั้งค่าให้ชี้ไปที่ส่วนหัวของสาขาอื่น

3. พาธที่ผสานอย่างหมดจดจะได้รับการอัปเดตทั้งในไฟล์ดัชนีและในแผนผังการทำงานของคุณ

4. สำหรับเส้นทางที่ขัดแย้งกัน ไฟล์ดัชนีจะบันทึกได้ถึงสามเวอร์ชัน: ระยะที่ 1 เก็บ
เวอร์ชันจากบรรพบุรุษร่วม ระยะที่ 2 จาก HEAD และระยะที่ 3 จาก MERGE_HEAD (คุณ
สามารถตรวจสอบขั้นตอนด้วย git ls-files -u) ไฟล์แผนผังการทำงานประกอบด้วย
ผลลัพธ์ของโปรแกรม "ผสาน" เช่น ผลการรวม 3 ทางกับตัวทำเครื่องหมายข้อขัดแย้งที่คุ้นเคย
<<< === >>>.

5. ไม่มีการเปลี่ยนแปลงอื่นๆ โดยเฉพาะอย่างยิ่ง การดัดแปลงในพื้นที่ที่คุณมีก่อนหน้าคุณ
การรวมที่เริ่มต้นจะยังคงเหมือนเดิมและรายการดัชนีสำหรับพวกเขาจะยังคงเหมือนเดิม
คือการจับคู่ HEAD

หากคุณลองผสานซึ่งส่งผลให้เกิดความขัดแย้งที่ซับซ้อนและต้องการเริ่มต้นใหม่ คุณสามารถ
กู้คืนด้วย git merge --abort

การควบรวมกิจการ TAG


เมื่อรวมแท็กที่มีคำอธิบายประกอบ (และอาจมีลายเซ็น) Git จะสร้างการรวมคอมมิตเสมอ
แม้ว่าการรวมไปข้างหน้าอย่างรวดเร็วเป็นไปได้และเทมเพลตข้อความยืนยันก็เตรียมไว้ด้วย
ข้อความแท็ก นอกจากนี้ หากแท็กถูกเซ็นชื่อ การตรวจสอบลายเซ็นจะถูกรายงานเป็น a
แสดงความคิดเห็นในเทมเพลตข้อความ ดูสิ่งนี้ด้วย แท็ก git(1)

เมื่อคุณต้องการเพียงแค่บูรณาการกับงานที่นำไปสู่การกระทำที่เป็น
แท็ก เช่น การซิงโครไนซ์กับจุดปล่อยต้นน้ำ คุณอาจไม่ต้องการสร้าง
การรวมคอมมิตที่ไม่จำเป็น

ในกรณีเช่นนี้ คุณสามารถ "แกะ" แท็กด้วยตัวเองก่อนป้อนเพื่อรวม git merge หรือส่งผ่าน
--ff-เฉพาะเมื่อคุณไม่มีงานทำด้วยตัวเอง เช่น

git ดึงต้นทาง
คอมไพล์ผสาน v1.2.3^0
คอมไพล์ผสาน --ff-only v1.2.3

วิธีการ ความขัดแย้ง เป็น นำเสนอ


ในระหว่างการผสาน ไฟล์แผนผังการทำงานจะได้รับการอัปเดตเพื่อแสดงผลลัพธ์ของการผสาน
ในบรรดาการเปลี่ยนแปลงที่เกิดขึ้นกับรุ่นของบรรพบุรุษร่วมกัน การเปลี่ยนแปลงที่ไม่ทับซ้อนกัน (นั่นคือ
คุณเปลี่ยนพื้นที่ของไฟล์ในขณะที่อีกด้านหนึ่งเหลือพื้นที่นั้นไว้เหมือนเดิม หรือในทางกลับกัน)
รวมอยู่ในผลลัพธ์สุดท้ายแบบคำต่อคำ เมื่อทั้งสองฝ่ายทำการเปลี่ยนแปลงเหมือนกัน
พื้นที่ อย่างไรก็ตาม Git ไม่สามารถสุ่มเลือกด้านใดด้านหนึ่งและขอให้คุณแก้ไข
โดยทิ้งสิ่งที่ทั้งสองฝ่ายทำไว้ในพื้นที่นั้น

ตามค่าเริ่มต้น Git จะใช้รูปแบบเดียวกับที่ใช้โดยโปรแกรม "ผสาน" จาก RCS
ชุดที่จะนำเสนอก้อนใหญ่ที่ขัดแย้งเช่นนี้:

นี่คือบรรทัดที่ไม่เปลี่ยนแปลงจากสามัญ
บรรพบุรุษหรือแก้ให้หมดจดเพราะเปลี่ยนเพียงด้านเดียว
<<<<<<< ขอแสดงความนับถือ:sample.txt
การแก้ไขข้อขัดแย้งนั้นยาก
ไปช้อปปิ้งกัน
=======
Git ทำให้การแก้ไขข้อขัดแย้งเป็นเรื่องง่าย
>>>>>>> พวกเขา:sample.txt
และนี่คืออีกบรรทัดหนึ่งที่ได้รับการแก้ไขอย่างหมดจดหรือไม่เปลี่ยนแปลง

บริเวณที่เกิดการเปลี่ยนแปลงที่ขัดแย้งกันจะมีเครื่องหมาย <<<<<<<,
======= และ >>>>>>> ส่วนที่อยู่ข้างหน้า ======= มักจะอยู่เคียงข้างคุณ และส่วน
หลังจากนั้นมักจะเป็นฝ่ายของพวกเขา

รูปแบบเริ่มต้นไม่แสดงสิ่งที่ต้นฉบับพูดในพื้นที่ที่ขัดแย้งกัน คุณ
ไม่สามารถบอกได้ว่ามีกี่บรรทัดที่ถูกลบและแทนที่ด้วยคำพูดของตุ๊กตาบาร์บี้ที่อยู่เคียงข้างคุณ NS
บอกได้อย่างเดียวว่าฝ่ายคุณอยากจะบอกว่ายากและอยากไปมากกว่า
ช้อปปิ้งในขณะที่อีกฝ่ายต้องการเรียกร้องมันเป็นเรื่องง่าย

สามารถใช้รูปแบบอื่นได้โดยการตั้งค่า "merge.conflictStyle" การกำหนดค่า
ตัวแปรเป็น "diff3" ในรูปแบบ "diff3" ข้อขัดแย้งข้างต้นอาจมีลักษณะดังนี้:

นี่คือบรรทัดที่ไม่เปลี่ยนแปลงจากสามัญ
บรรพบุรุษหรือแก้ให้หมดจดเพราะเปลี่ยนเพียงด้านเดียว
<<<<<<< ขอแสดงความนับถือ:sample.txt
การแก้ไขข้อขัดแย้งนั้นยาก
ไปช้อปปิ้งกัน
|||||||||
การแก้ไขข้อขัดแย้งนั้นยาก
=======
Git ทำให้การแก้ไขข้อขัดแย้งเป็นเรื่องง่าย
>>>>>>> พวกเขา:sample.txt
และนี่คืออีกบรรทัดหนึ่งที่ได้รับการแก้ไขอย่างหมดจดหรือไม่เปลี่ยนแปลง

นอกจากเครื่องหมาย <<<<<<<, ======= และ >>>>>>> จะใช้เครื่องหมายอื่น ||||||| เครื่องหมาย
ที่ตามมาด้วยข้อความต้นฉบับ คุณสามารถบอกได้ว่าต้นฉบับเพิ่งระบุข้อเท็จจริง
แล้วฝ่ายเจ้าก็ยอมตามคำกล่าวนั้นและยอมแพ้ ในขณะที่อีกฝ่ายพยายามจะ
มีทัศนคติเชิงบวกมากขึ้น บางครั้งคุณสามารถหาความละเอียดได้ดีขึ้นโดย
การดูต้นฉบับ

วิธีการ TO แก้ปัญหา ความขัดแย้ง


หลังจากเห็นข้อขัดแย้ง คุณสามารถทำสองสิ่ง:

· ตัดสินใจที่จะไม่รวม การล้างข้อมูลเพียงอย่างเดียวที่คุณต้องการคือการรีเซ็ตไฟล์ดัชนีเป็น
HEAD มุ่งมั่นที่จะย้อนกลับ 2. และเพื่อล้างการเปลี่ยนแปลงแผนผังการทำงานที่ทำโดย 2. และ 3; git
merge --abort สามารถใช้สำหรับสิ่งนี้

· แก้ไขข้อขัดแย้ง Git จะทำเครื่องหมายข้อขัดแย้งในแผนผังการทำงาน แก้ไขไฟล์
เข้ารูปและ คอมไพล์ เพิ่ม ไปที่ดัชนี ใช้ คอมไพล์ ผูกมัด เพื่อปิดผนึกข้อตกลง

คุณสามารถแก้ไขข้อขัดแย้งได้ด้วยเครื่องมือมากมาย:

· ใช้เครื่องมือผสาน git mergetool เพื่อเปิด mergetool แบบกราฟิกซึ่งจะช่วยคุณได้
ผ่านการผสาน

· ดูความแตกต่าง git diff จะแสดงความแตกต่างสามทางโดยเน้นการเปลี่ยนแปลงจาก
ทั้งเวอร์ชัน HEAD และ MERGE_HEAD

· ดูความแตกต่างจากแต่ละสาขา บันทึก git --merge -p จะโชว์ดิฟก่อน
สำหรับรุ่น HEAD และรุ่น MERGE_HEAD

· ดูต้นฉบับ git show :1:filename แสดงบรรพบุรุษร่วมกัน git show
:2:filename แสดงเวอร์ชัน HEAD และ git show :3:filename แสดง MERGE_HEAD
รุ่น

ตัวอย่าง


· ผสานการแก้ไขและการปรับปรุงสาขาที่ด้านบนของสาขาปัจจุบัน ทำให้เป็นปลาหมึก
ผสาน:

$ git merge แก้ไขการปรับปรุง

· รวมสาขาที่ล้าสมัยลงในสาขาปัจจุบัน โดยใช้กลยุทธ์การรวมของเรา:

$ git merge -s ของเราล้าสมัย

· รวม maint ของสาขาเข้ากับสาขาปัจจุบัน แต่อย่าสร้างคอมมิตใหม่
โดยอัตโนมัติ:

$ git ผสาน --no-commit maint

สามารถใช้เมื่อคุณต้องการรวมการเปลี่ยนแปลงเพิ่มเติมในการผสาน หรือต้องการ
เขียนข้อความยืนยันการผสานของคุณเอง

คุณควรละเว้นจากการใช้ตัวเลือกนี้ในทางที่ผิดเพื่อแอบดูการเปลี่ยนแปลงที่สำคัญในการควบรวมกิจการ
ให้สัญญา. การแก้ไขเล็กๆ น้อยๆ เช่น การชนกันของรุ่น/ชื่อรุ่นจะเป็นที่ยอมรับได้

ผสาน กลยุทธ์


กลไกการผสาน (คำสั่ง git merge และ git pull) ช่วยให้แบ็กเอนด์ ผสาน กลยุทธ์
ให้เลือกด้วยตัวเลือก -s กลยุทธ์บางอย่างสามารถใช้ตัวเลือกของตนเองได้ ซึ่งสามารถ
ผ่านการให้ -X อาร์กิวเมนต์เพื่อ git merge และ/หรือ git pull

แก้ไข
สิ่งนี้สามารถแก้ไขได้เพียงสองหัว (เช่นสาขาปัจจุบันและสาขาอื่นที่คุณดึง
จาก) โดยใช้อัลกอริธึมการรวม 3 ทาง พยายามตรวจจับการผสานแบบกากบาทอย่างระมัดระวัง
ความคลุมเครือและถือว่าโดยทั่วไปปลอดภัยและรวดเร็ว

ซ้ำ
วิธีนี้สามารถแก้ไขได้เพียงสองหัวโดยใช้อัลกอริธึมการรวม 3 ทาง เมื่อมีมากกว่า
บรรพบุรุษร่วมกันหนึ่งเดียวที่ใช้สำหรับการผสาน 3 ทาง จะสร้างต้นไม้ผสานของ
บรรพบุรุษร่วมกันและใช้สิ่งนั้นเป็นแผนผังอ้างอิงสำหรับการผสาน 3 ทาง นี้มี
ถูกรายงานว่าส่งผลให้เกิดข้อขัดแย้งในการผสานน้อยลงโดยไม่ทำให้เกิดการผสานโดยการทดสอบ
เสร็จสิ้นในการผสานจริงที่นำมาจากประวัติการพัฒนาเคอร์เนล Linux 2.6
นอกจากนี้ยังสามารถตรวจจับและจัดการการผสานที่เกี่ยวข้องกับการเปลี่ยนชื่อ นี่คือค่าเริ่มต้น
ผสานกลยุทธ์เมื่อดึงหรือรวมสาขาเดียว

เทศกาล ซ้ำ กลยุทธ์สามารถใช้ตัวเลือกต่อไปนี้:

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

สิ่งนี้ไม่ควรสับสนกับ แบก กลยุทธ์การผสานซึ่งไม่ได้ดู
ในสิ่งที่ต้นไม้อื่นมีอยู่เลย มันละทิ้งทุกอย่างที่ต้นไม้ต้นอื่นทำ
ภาษณ์ ของเรา ประวัติศาสตร์มีทุกสิ่งที่เกิดขึ้นในนั้น

ของพวกเขา
นี่คือสิ่งที่ตรงกันข้ามกับ แบก.

ความอดทน
ด้วยตัวเลือกนี้ ผสาน-เรียกซ้ำ ใช้เวลาเพิ่มขึ้นเล็กน้อยเพื่อหลีกเลี่ยงการ mismerges
ที่บางครั้งเกิดขึ้นเนื่องจากเส้นจับคู่ที่ไม่สำคัญ (เช่น วงเล็บปีกกาจากความแตกต่าง
ฟังก์ชั่น). ใช้สิ่งนี้เมื่อกิ่งที่จะรวมแยกกันอย่างดุเดือด ดูสิ่งนี้ด้วย
git-diff(1) --ความอดทน.

diff-algorithm=[ความอดทน|น้อยที่สุด|ฮิสโตแกรม|ไมเยอร์]
บอก ผสาน-เรียกซ้ำ เพื่อใช้อัลกอริธึมที่แตกต่างซึ่งสามารถช่วยหลีกเลี่ยงได้
mismerges ที่เกิดขึ้นเนื่องจากเส้นการจับคู่ที่ไม่สำคัญ (เช่น วงเล็บปีกกาจาก
ฟังก์ชั่นที่แตกต่าง) ดูสิ่งนี้ด้วย git-diff(1) --diff-อัลกอริทึม

ละเว้นช่องว่างการเปลี่ยนแปลง, ละเว้นช่องว่างทั้งหมด, ละเว้น-อวกาศ-at-eol
ถือว่าเส้นที่มีการเปลี่ยนช่องว่างประเภทที่ระบุไม่เปลี่ยนแปลงสำหรับ
เห็นแก่การรวมสามทาง การเปลี่ยนแปลงช่องว่างผสมกับการเปลี่ยนแปลงอื่นๆ ในบรรทัด
ไม่ถูกละเลย ดูสิ่งนี้ด้วย git-diff(1) -b, -w และ --ignore-space-at-eol

· ถ้า ของพวกเขา เวอร์ชันแนะนำการเปลี่ยนแปลงช่องว่างในบรรทัดเท่านั้น ของเรา รุ่นคือ
ใช้แล้ว;

· ถ้า ของเรา รุ่นแนะนำการเปลี่ยนแปลงช่องว่างแต่ ของพวกเขา รุ่นรวมถึงa
การเปลี่ยนแปลงที่สำคัญ, ของพวกเขา ใช้เวอร์ชัน

· มิฉะนั้น การผสานจะดำเนินการตามปกติ

ทำให้ปกติ
การดำเนินการนี้จะทำการเช็คเอาท์และเช็คอินเสมือนของทั้งสามขั้นตอนของไฟล์เมื่อ
การแก้ไขการรวมสามทาง ตัวเลือกนี้มีไว้สำหรับใช้เมื่อรวมสาขา
ด้วยตัวกรองสะอาดที่แตกต่างกันหรือกฎการทำให้เป็นมาตรฐานที่สิ้นสุดบรรทัด ดู "การผสาน
สาขาที่มีลักษณะการเช็คอิน/เช็คเอาต์ต่างกัน" ใน แอตทริบิวต์(5) สำหรับ
รายละเอียด

ไม่สร้างมาตรฐานใหม่
ปิดใช้งานตัวเลือกการปรับค่าปกติ สิ่งนี้จะแทนที่ merge.renormalize
ตัวแปรการกำหนดค่า

เปลี่ยนชื่อ-threshold=
ควบคุมเกณฑ์ความคล้ายคลึงกันที่ใช้สำหรับการตรวจหาการเปลี่ยนชื่อ ดูสิ่งนี้ด้วย git-diff(1)
-NS.

ทรีย่อย[= ]
ตัวเลือกนี้เป็นรูปแบบขั้นสูงของ ทรีย่อย กลยุทธ์ที่กลยุทธ์ทำให้
เดาว่าต้องย้ายต้นไม้สองต้นมารวมกันอย่างไรเมื่อรวมกัน
แต่เส้นทางที่ระบุจะถูกนำหน้า (หรือถอดออกจากจุดเริ่มต้น) เพื่อสร้าง
รูปร่างของต้นไม้สองต้นให้เข้าคู่กัน

ปลาหมึกยักษ์
สิ่งนี้แก้ไขกรณีที่มีมากกว่าสองหัว แต่ปฏิเสธที่จะทำการรวมที่ซับซ้อนนั้น
ต้องการความละเอียดแบบ manual มีวัตถุประสงค์หลักเพื่อใช้สำหรับการรวมสาขาหัวข้อ
หัวกัน. นี่คือกลยุทธ์การรวมเริ่มต้นเมื่อดึงหรือรวมมากกว่า
หนึ่งสาขา

แบก
สิ่งนี้จะแก้ไขหัวจำนวนเท่าใดก็ได้ แต่ต้นไม้ผลลัพธ์ของการผสานจะเป็นเช่นนั้นเสมอ
ของหัวหน้าสาขาปัจจุบัน โดยไม่สนใจการเปลี่ยนแปลงทั้งหมดจากสาขาอื่นทั้งหมดอย่างมีประสิทธิภาพ
มีไว้เพื่อใช้แทนที่ประวัติศาสตร์การพัฒนาเก่าของสาขาย่อย บันทึก
ว่าสิ่งนี้แตกต่างจากตัวเลือก -Xours ถึง ซ้ำ กลยุทธ์การรวม

ทรีย่อย
นี่คือกลยุทธ์แบบเรียกซ้ำที่แก้ไขแล้ว เมื่อรวมต้นไม้ A และ B ถ้า B สอดคล้องกับ
ทรีย่อยของ A, B จะถูกปรับให้เข้ากับโครงสร้างต้นไม้ของ A ก่อน แทนที่จะเป็น
การอ่านต้นไม้ในระดับเดียวกัน การปรับนี้ทำกับคนทั่วไปเช่นกัน
ต้นไม้บรรพบุรุษ

ด้วยกลยุทธ์ที่ใช้การผสาน 3 ทาง (รวมถึงค่าเริ่มต้น ซ้ำ) หากมีการเปลี่ยนแปลง
จะทำทั้งสองสาขา แต่ภายหลังกลับคืนมาที่กิ่งใดกิ่งหนึ่ง การเปลี่ยนแปลงนั้นจะเป็น
นำเสนอในผลรวม; บางคนพบว่าพฤติกรรมนี้ทำให้เกิดความสับสน เกิดขึ้นเพราะ
เฉพาะส่วนหัวและฐานที่ผสานเท่านั้นที่จะถูกพิจารณาเมื่อทำการผสาน ไม่ใช่
ความมุ่งมั่นของแต่ละบุคคล อัลกอริทึมการผสานจึงถือว่าการเปลี่ยนแปลงที่ย้อนกลับเป็น no
เปลี่ยนเลยและแทนที่เวอร์ชันที่เปลี่ยนแปลงแทน

การกำหนดค่า


ผสาน ConflictStyle
ระบุรูปแบบที่เขียน hunks ที่ขัดแย้งกันลงในไฟล์แผนผังการทำงานเมื่อ
ผสาน. ค่าเริ่มต้นคือ "ผสาน" ซึ่งแสดงเครื่องหมายความขัดแย้ง <<<<<<< การเปลี่ยนแปลงที่ทำโดย
ด้านหนึ่ง a ======= เครื่องหมาย การเปลี่ยนแปลงที่ทำโดยอีกด้านหนึ่ง และเครื่องหมาย >>>>>>>
รูปแบบอื่น "diff3" เพิ่ม ||||||| เครื่องหมายและข้อความต้นฉบับก่อน
======== เครื่องหมาย

ผสานdefaultToUpstream
หากมีการเรียกการผสานโดยไม่มีอาร์กิวเมนต์ใดๆ ให้รวมสาขาต้นน้ำที่กำหนดค่าไว้
สำหรับสาขาปัจจุบันโดยใช้ค่าที่สังเกตล่าสุดที่เก็บไว้ใน
สาขาการติดตามระยะไกล ค่าของสาขา .รวมชื่อนั้น
สาขาที่รีโมทที่ตั้งชื่อตามสาขา .remote ได้รับการปรึกษาและ
จากนั้นพวกมันจะถูกแมปผ่านรีโมต .fetch ไปยังการติดตามระยะไกลที่เกี่ยวข้อง
สาขาและเคล็ดลับของสาขาการติดตามเหล่านี้จะถูกรวมเข้าด้วยกัน

ผสาน.ff
ตามค่าเริ่มต้น Git จะไม่สร้างการคอมมิตการผสานเพิ่มเติมเมื่อรวมการคอมมิตที่เป็น
ลูกหลานของการกระทำปัจจุบัน ปลายของสาขาปัจจุบันคือ
กรอไปข้างหน้า เมื่อตั้งค่าเป็นเท็จ ตัวแปรนี้จะบอกให้ Git สร้างการผสานเพิ่มเติม
กระทำในกรณีดังกล่าว (เทียบเท่ากับการให้ตัวเลือก --no-ff จากบรรทัดคำสั่ง)
เมื่อตั้งค่าเป็นเท่านั้น จะอนุญาตเฉพาะการผสานแบบกรอไปข้างหน้าเท่านั้น (เทียบเท่ากับการให้
--ff-only ตัวเลือกจากบรรทัดคำสั่ง)

ผสานสาขา
นอกจากชื่อสาขาแล้ว ให้เติมข้อความบันทึกด้วยข้อความคำอธิบายสาขา
ที่เกี่ยวข้องกับพวกเขา ค่าเริ่มต้นเป็นเท็จ

ผสาน.log
นอกจากชื่อสาขาแล้ว ให้เติมข้อความบันทึกด้วยค่าสูงสุดที่ระบุ
จำนวนคำอธิบายหนึ่งบรรทัดจากการคอมมิตจริงที่กำลังถูกรวม
ค่าเริ่มต้นเป็นเท็จและจริงเป็นคำพ้องความหมายสำหรับ 20

ผสาน renameLimit
จำนวนไฟล์ที่ต้องพิจารณาเมื่อทำการตรวจหาการเปลี่ยนชื่อระหว่างการผสาน ถ้า
ไม่ได้ระบุ ค่าเริ่มต้นเป็นค่าของ diff.renameLimit

ผสาน ฟื้นฟู
บอก Git ว่าการแสดงรูปแบบบัญญัติของไฟล์ในที่เก็บได้เปลี่ยนไปแล้ว
เวลา (เช่นก่อนหน้านี้ยอมรับไฟล์ข้อความบันทึกด้วยการลงท้ายบรรทัด CRLF แต่ล่าสุด
ใช้การลงท้ายบรรทัด LF) ในที่เก็บดังกล่าว Git สามารถแปลงข้อมูลที่บันทึกไว้ใน
ยอมรับรูปแบบบัญญัติก่อนที่จะทำการผสานเพื่อลดข้อขัดแย้งที่ไม่จำเป็น
สำหรับข้อมูลเพิ่มเติม โปรดดูที่ส่วน "การรวมสาขาที่มีการเช็คอิน/เช็คเอาต์ต่างกัน
คุณสมบัติ" ใน แอตทริบิวต์(5)

ผสาน.stat
จะพิมพ์ diffstat ระหว่าง ORIG_HEAD และผลการรวมที่ส่วนท้ายของ .หรือไม่
ผสาน. จริงตามค่าเริ่มต้น

ผสานเครื่องมือ
ควบคุมเครื่องมือผสานที่ .ใช้ git-ผสานเครื่องมือ(1). รายการด้านล่างแสดง valid
ค่าในตัว ค่าอื่นๆ จะถือเป็นเครื่องมือผสานแบบกำหนดเอง และกำหนดให้ a
mergetool ที่เกี่ยวข้อง ตัวแปร .cmd ถูกกำหนดไว้แล้ว

· อะราซิส

· พ.ศ

· บีซี3

· รหัสเปรียบเทียบ

· เดลต้าวอล์คเกอร์

· แตกต่าง

· กระจาย

· โผล่ออกมา

· โผล่ออกมา

· gvimdiff

· gvimdiff2

· gvimdiff3

· kdiff3

· ผสมผสาน

· opendiff

· p4merge

· tkdiff

· เต่าผสาน

· วิมดิฟฟ์

· vimdiff2

· vimdiff3

· วินเมิร์จ

· xxdiff

การผสานความฟุ่มเฟือย
ควบคุมจำนวนเอาต์พุตที่แสดงโดยกลยุทธ์การผสานแบบเรียกซ้ำ ระดับ 0 เอาท์พุท
ไม่มีอะไรนอกจากข้อความแสดงข้อผิดพลาดสุดท้ายหากตรวจพบข้อขัดแย้ง เอาต์พุตระดับ 1 เท่านั้น
ข้อขัดแย้ง 2 เอาต์พุตข้อขัดแย้งและการเปลี่ยนแปลงไฟล์ การดีบักเอาต์พุตระดับ 5 ขึ้นไป
ข้อมูล. ค่าเริ่มต้นคือระดับ 2 สามารถแทนที่ได้โดย GIT_MERGE_VERBOSITY
ตัวแปรสภาพแวดล้อม

ผสาน. .ชื่อ
กำหนดชื่อที่มนุษย์สามารถอ่านได้สำหรับโปรแกรมควบคุมการผสานระดับต่ำแบบกำหนดเอง ดู
แอตทริบิวต์(5) สำหรับรายละเอียด

ผสาน. .driver
กำหนดคำสั่งที่ใช้โปรแกรมควบคุมการผสานระดับต่ำแบบกำหนดเอง ดู
แอตทริบิวต์(5) สำหรับรายละเอียด

ผสาน. .recursive
ตั้งชื่อโปรแกรมควบคุมการผสานระดับต่ำที่จะใช้เมื่อทำการผสานภายในระหว่าง
บรรพบุรุษร่วมกัน ดู แอตทริบิวต์(5) สำหรับรายละเอียด

สาขา. .mergeOptions
ตั้งค่าตัวเลือกเริ่มต้นสำหรับการรวมเข้ากับสาขา . ไวยากรณ์และตัวเลือกที่รองรับ
เหมือนกับของ คอมไพล์ ผสานแต่ค่าตัวเลือกที่มีอักขระช่องว่าง
ยังไม่รองรับในขณะนี้

ใช้ git-merge ออนไลน์โดยใช้บริการ onworks.net



โปรแกรมออนไลน์ Linux และ Windows ล่าสุด