ทำไมคอมไพล์แจ้งให้ฉันสำหรับโพสต์การดึงจดหมายเวียน?


142

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

ในอดีตมันจะทำการผสานอย่างเงียบ ๆ พร้อมกับข้อความส่งข้อความมาตรฐาน (ตามแนวของMerge branch 'dev' of remote.com:/repo into dev)

ฉันเพิ่งอัปเดตคอมไพล์เป็น 1.7.11.3 เวอร์ชัน (ผ่าน homebrew) แต่ไม่สามารถคิดอะไรอีกเลยที่ฉันอาจทำเพื่อเปลี่ยนพฤติกรรมนี้ นี่เป็นการตั้งค่าหรือมีวิธีอื่นในการกลับไปสู่วิธีเดิมไหม?

คำตอบ:


157

ใน git 1.7.10 ผู้พัฒนา git ตัดสินใจรวมการคอมมิทสามารถทำได้ง่ายเกินไป ดังที่อธิบายไว้ในโพสต์บล็อกการบังคับให้พฤติกรรมการส่งข้อความโต้ตอบควรทำให้ข้อความที่ส่งนั้นละเอียดมากขึ้นและสามารถลดความถี่โดยรวมของการรวมที่ไม่จำเป็น

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


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

10
นี้ยังเป็นทรัพยากรที่มีประโยชน์สำหรับการหลีกเลี่ยงพฤติกรรมนี้: longair.net/blog/2009/04/16/git-fetch-and-merge คุณควรจะหลีกเลี่ยงgit pull; ใช้git merge --ff-onlyหากคุณเพียงแค่พยายามอัปเดตและคุณไม่คิดว่าคุณจะมีการเปลี่ยนแปลงในเครื่อง ใช้git merge --no-ffถ้าคุณกำลังพยายามรวมสาขาเข้าด้วยกัน
Glyph

6
มีการตั้งค่าสถานะเพื่อปิดสิ่งนี้หรือไม่ มันน่ารำคาญที่จะต้องพิมพ์ - ไม่แก้ไขทุกครั้ง
LandonSchropp

น่ากลัว ขอบคุณสำหรับการแบ่งปัน @Christopher
LandonSchropp

3
@SeanCoetzee: มันขึ้นอยู่กับคุณ$EDITORตั้งค่า แต่ถ้าคุณกำลังใช้คอมไพล์ออกจากกล่องใน OSX มันอาจจะเป็นโปรแกรมที่เรียกว่า'vi' พิมพ์iเพื่อเข้าสู่โหมด "INSERT"; พิมพ์ข้อความของคุณ จากนั้นคุณสามารถบันทึกและเลิกโดยการกดปุ่มและการพิมพ์แล้วESC :wq
คริสโตเฟอร์

58

ในการสร้างทางลัดสำหรับการใช้งานในอนาคตให้ทำดังนี้: -

แก้ไขของคุณ~/.gitconfigด้วยสิ่งต่อไปนี้:

[core]
    mergeoptions = --no-edit

หรือดำเนินการต่อไปนี้ใน Terminal

git config --global core.mergeoptions --no-edit


13
เรื่องนี้ไม่ได้ทำงานสำหรับฉัน (คอมไพล์ใน OSX) git config --global core.mergeoptionsและฉันได้ตั้งอย่างถูกต้องมองไปที่การส่งออกของ
jvannistelrooy

คำสั่งเทอร์มินัลควรเป็นดังนี้git config core.mergeoptions --no-edit
S. Mert

@SimsekMert ที่จะแก้ไข. gitconfig ในพื้นที่เก็บข้อมูลปัจจุบันเท่านั้นไม่ใช่ทั่วโลกสำหรับที่เก็บ git ทุกแห่ง
Dallas Clark

@AbhishekGoel มีโอกาสคุณอาจต้องรีสตาร์ทเครื่องสำหรับการเปลี่ยนแปลงที่จะส่งผลกระทบต่อ
ดัลลัสคลาร์ก

@jvannistelrooy มีโอกาสที่คุณอาจต้องรีสตาร์ท Terminal เพื่อให้การเปลี่ยนแปลงมีผล
Dallas Clark

11

ก่อนอื่นให้ระวังคำเตือนในคำตอบของคริสโตเฟอร์ด้านบน

จากนั้นหากคุณยังต้องการปิดการใช้งานการผสานการแก้ไขข้อความโดยอัตโนมัติให้ตั้งค่าตัวแปรสภาพแวดล้อมนี้:

    GIT_MERGE_AUTOEDIT=no

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


คุณอธิบายได้ไหมว่ามันแตกต่างจากการใช้--no-editแฟล็กอย่างไร
Alexander Mills

2
ฉันไม่ทราบถึงความแตกต่างในการใช้งาน แต่ปัจจัยด้านความสะดวกทำให้คุ้มค่า ต้องทำการ--no-editตั้งค่าสถานะซ้ำบนบรรทัดคำสั่งด้วยการใช้งานแต่ละครั้งเนื่องจากไม่สามารถใช้งานได้ในการตั้งค่าตามที่อธิบายไว้ในคำตอบของ Dallas Clark การตั้งค่าตัวแปรสภาพแวดล้อมเป็นวิธีเดียวที่ฉันรู้ที่จะทำให้การตั้งค่านี้ติด
emackey
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.