คำเตือน: push.default ไม่ได้ตั้งค่า; ค่าโดยนัยมีการเปลี่ยนแปลงใน Git 2.0


1623

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

warning: push.default is unset; its implicit value is changing in 
Git 2.0 from 'matching' to 'simple'. To squelch this message 
and maintain the current behavior after the default changes, use: 

  git config --global push.default matching

To squelch this message and adopt the new behavior now, use: 

  git config --global push.default simple

เห็นได้ชัดว่าฉันสามารถตั้งค่าเป็นหนึ่งในค่าที่กล่าวถึง แต่สิ่งที่พวกเขาหมายถึงอะไร ความแตกต่างระหว่างsimpleและmatchingคืออะไร

หากฉันเปลี่ยนลูกค้ารายหนึ่งฉันจะต้องทำอะไรกับลูกค้ารายอื่นที่ฉันแบ่งปัน repos ด้วยหรือไม่




1
หมายเหตุ: git 2.8 (มีนาคม 2016) จะลบคำเตือนนั้น! ดูstackoverflow.com/a/22356644/6309
VonC

คำตอบ:


2148

มีการอธิบายอย่างละเอียดในเอกสารแต่ฉันจะพยายามสรุป:

  • matchingหมายถึงgit pushจะผลักสาขาในประเทศของคุณทั้งหมดไปยังสาขาที่มีชื่อเดียวกันบนรีโมท สิ่งนี้ทำให้ง่ายต่อการกดสาขาที่คุณไม่ได้ตั้งใจ

  • simpleหมายถึงgit pushจะผลักเฉพาะสาขาปัจจุบันไปยังสาขาที่git pullจะดึงและตรวจสอบว่าชื่อของพวกเขาตรงกัน นี่เป็นพฤติกรรมที่ใช้งานง่ายกว่าซึ่งเป็นสาเหตุที่ค่าเริ่มต้นเปลี่ยนเป็นสิ่งนี้

การตั้งค่านี้มีผลกับพฤติกรรมของลูกค้าในพื้นที่ของคุณเท่านั้นและสามารถแทนที่ได้โดยการระบุสาขาที่คุณต้องการกดบรรทัดคำสั่งอย่างชัดเจน ลูกค้าอื่น ๆ สามารถมีการตั้งค่าที่แตกต่างกันก็เพียงส่งผลกระทบต่อสิ่งที่เกิดขึ้นเมื่อคุณไม่ได้ระบุสาขาที่คุณต้องการที่จะผลักดัน


16
ดีใจที่ได้ทราบการเปลี่ยนแปลงนี้ เมื่อฉันใหม่เพื่อ git ฉันตั้งใจผลักสาขาท้องถิ่นคิดว่าgit pushจะผลักสาขาปัจจุบันเท่านั้น
rahul286

51
แรงจูงใจคือว่าโดยสังเกตุคาดหวังมากที่สุดว่าพฤติกรรมเริ่มต้นใหม่
เบลเลอร์มิลเลอร์

125
มันจะดีกว่ามากหากคุณมีบทสรุปที่ชัดเจนอย่างน่าอัศจรรย์ในข้อความเตือนแทนที่จะเป็นคำสั่งที่บอกให้เราเปิดเอกสารและค้นหาสตริง
hertzsprung

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

36
บทสรุปของ hammar เป็นคำอธิบายที่กระชับกว่าเอกสาร git
AJ

19

ฉันรู้ว่านี่เป็นโพสต์เก่า แต่เมื่อฉันเพิ่งพบปัญหาเดียวกันและมีปัญหาในการค้นหาคำตอบที่ฉันคิดว่าฉันจะเพิ่มเล็กน้อย

ดังนั้นคำตอบของ @ hammar นั้นถูกต้อง การใช้push.default simpleคือในทางใดทางหนึ่งเช่นการกำหนดค่าการติดตามในสาขาของคุณดังนั้นคุณไม่จำเป็นต้องระบุรีโมตและสาขาเมื่อกดและดึง matchingตัวเลือกที่จะผลักดันทุกสาขาที่สอดคล้องกับคู่ของพวกเขาในระยะไกลเริ่มต้น (ซึ่งเป็นคนแรกที่ได้รับการตั้งค่าเว้นแต่คุณได้กำหนดค่า repo ของคุณเป็นอย่างอื่น)

สิ่งหนึ่งที่ฉันหวังว่าคนอื่นจะพบว่ามีประโยชน์ในอนาคตคือฉันใช้ Git 1.8 ใน OS X Mountain Lion และไม่เคยเห็นข้อผิดพลาดนี้ การอัพเกรดเป็น Mavericks เป็นสิ่งที่ทำให้มันปรากฏขึ้นทันที (การทำงานgit --versionจะแสดงขึ้นgit version 1.8.3.4 (Apple Git-47)ซึ่งฉันไม่เคยเห็นมาก่อนจนกว่าจะมีการอัปเดตเป็น OS


2
ฉันก็เริ่มเห็นสิ่งนี้หลังจากอัพเกรดเป็น Mavericks ดังนั้นฉันคิดว่า Git ได้รับการอัพเกรดในเวลาเดียวกับ Mavericks เหมือนที่คุณบอกเป็นนัย
ต่อ Lundberg

8

ถ้าคุณได้รับข้อความจากคอมไพล์บ่นเกี่ยวกับค่าที่ในการกำหนดค่าตรวจสอบของคุณsimplegit version

หลังจากอัปเกรดXCode(ระหว่างการMacทำงานMountain Lion) ซึ่งอัพเกรดgitจาก1.7.4.4เป็น1.8.3.4เชลล์เริ่มต้นก่อนที่การอัปเกรดจะยังรัน git 1.7.4.4และบ่นเกี่ยวกับค่าsimpleของ push.default ในการกำหนดค่าส่วนกลาง

ทางออกคือการปิดเชลล์ที่ใช้เวอร์ชั่นเก่าgitและใช้เวอร์ชั่นใหม่!


13
ฉันกำลังใช้การติดตั้ง Xcode ใหม่ (git เป็นรุ่น 1.8.5.2) และฉันยังคงมีข้อผิดพลาดนี้จนกระทั่งฉันวิ่ง:git config --global push.default simple
Sam-Graham

2

ฉันสงสัยว่าทำไมฉันถึงได้รับข้อความเตือนขนาดใหญ่บน Ubuntu 16.04 (ซึ่งมาพร้อมกับ Git 2.7.4) แต่ไม่ใช่ใน Arch Linux เหตุผลคือการลบคำเตือนในGit 2.8 (มีนาคม 2016):

ในช่วงการเปลี่ยนผ่านที่ประมาณ Git เวอร์ชัน 2.0 ผู้ใช้เคยได้รับคำเตือนที่ดังเมื่อใช้ "git push" โดยไม่ต้องตั้งค่าตัวแปรการตั้งค่า push.default เราไม่ได้เตือนอีกต่อไปเนื่องจากการเปลี่ยนแปลงได้เสร็จสิ้นเป็นเวลานานแล้ว

ดังนั้นคุณจะไม่เห็นคำเตือนถ้าคุณมี Git 2.8 และใหม่กว่าและไม่จำเป็นต้องตั้งค่าpush.defaultเว้นแต่คุณต้องการเปลี่ยน'simple'พฤติกรรมเริ่มต้น

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