ทำไม git ถึงถูกเรียกใช้น้อยลงโดยไม่จำเป็น?


22

เมื่อฉันรันgit branch(จาก bash หรือ csh) มันจะทำการส่งออกไปยังท่อโดยlessอัตโนมัติ อย่างไรก็ตามมีเพียงไม่กี่สาขาในพื้นที่เก็บข้อมูลที่เกินความจำเป็นมันน่ารำคาญเนื่องจากรายชื่อสาขาหายไปเมื่อฉันเลิกน้อยลง

การตรวจสอบ~/.gitconfigไฟล์และ.git/configไฟล์โลคัลไม่พบสิ่งใดเกี่ยวกับเพจเจอร์หรือสิ่งอื่นใดที่จะทำให้เกิดปัญหานี้ ไม่อย่างนั้นฉันไม่พบสิ่งใดในการค้นหาเว็บมีประโยชน์หรือมีแนวโน้ม

เหตุใดสิ่งนี้จึงเกิดขึ้นและฉันสามารถทำอะไรได้บ้างlessเมื่อต้องการ (เช่นเมื่อทำประวัติgit logเมื่อมีจำนวนมาก) แต่ไม่ใช่อย่างอื่น (เช่นgit branchสาขาที่มีสาขา 2 หรือ 3 สาขาเท่านั้น)


4
โดยทั่วไปคอมไพล์ไม่รู้จำนวนเอาต์พุตที่จะมาจากคำสั่งใด ๆ ดังนั้นมันจะส่งทุกอย่างเป็นค่าเริ่มต้นผ่านเพจเจอร์ซึ่งอาจจะน้อยกว่า
รัส

6
สิ่งแรกที่ทำในการติดตั้ง -nix ใหม่คือการใส่ในexport LESS=-X .profileสิ่งนี้จะช่วยลดการ "ล้าง"หน้าจอ ฉันเกลียดที่การตั้งค่ามาตรฐานล้างหน้าจอเพราะฉันมักจะต้องตัดและวางเนื้อหาหรือใช้เป็นข้อมูลอ้างอิง
Peter - Reinstate Monica

3
@ ปีเตอร์เพื่อให้ชัดเจน (ไม่มีการเล่นสำนวนเจตนา) เฉพาะคนที่ไม่ต้องการให้มีพฤติกรรมการล้างหน้าจอควรทำเช่นนั้น
David Z

@icarus: ดูเหมือนว่ามีเหตุผล อย่างไรก็ตามพฤติกรรมของฉันเปลี่ยนไปเมื่อเร็ว ๆ นี้ ฉันไม่แน่ใจว่าทำไม - อาจมีการเปลี่ยนแปลงตัวแปรสภาพแวดล้อมบางอย่างที่บังคับจากกลุ่มความปลอดภัยขององค์กร "สูง" ซึ่งดูเหมือนจะไม่สนใจว่าพวกเขาจะทำให้งานของคนอื่นยากลำบากแค่ไหน อย่างไรก็ตามทันใดนั้นคอมไพล์ก็เปลี่ยนจากสิ่งที่ฉันคิดว่าเป็นพฤติกรรมที่สมเหตุสมผลในการรันเอาต์พุตบรรทัดเดียวโดยใช้ค่าน้อยลงในลักษณะที่เอาต์พุตหายไปเมื่อฉันหยุดทำงานน้อยลง
GreenMatt

หากพฤติกรรมที่เปลี่ยนไปเมื่อเร็ว ๆ นี้อย่างน้อยก็เป็นไปได้ว่ามีการเพิ่มการตั้งค่าของตัวแปร LESS ลงในไฟล์เริ่มต้นเชลล์ทั้งระบบเช่น / etc / profile, /etc/profile.d/*, /etc/bash.bashrc คุณมีตัวแปรนี้ในสภาพแวดล้อมของคุณหรือไม่?
รัส

คำตอบ:


35

คุณสามารถตั้งค่าต่อไปนี้:

git config --global core.pager 'less -FRX'

สิ่งนี้จะทำให้มั่นใจได้ว่าlessจะ

  • ออกหากไฟล์ทั้งหมดสามารถแสดงบนหน้าจอแรก ( F)
  • เอาท์พุทตัวควบคุมดิบสำหรับการจัดรูปแบบขั้ว ( R)
  • สับเส้นยาว ( S)
  • อย่าส่งสตริง init / de-init ไปยังเทอร์มินัล - หลีกเลี่ยงการล้างหน้าจอเมื่อออก ( X)

แก้ไข: ลบSตัวเลือกตามความคิดเห็นของ Peter A. Scheider


7
และละเว้น--globalถ้าคุณต้องการให้ใช้กับที่เก็บปัจจุบันเท่านั้น
mosvy

8
การตั้งค่าตัวแปรสภาพแวดล้อมLESSเป็น-FRเพิ่มใน X และ S เพื่อลิ้มรสเป็นวิธีอื่น
รัส

2
ดูเพิ่มเติมที่unix.stackexchange.com/questions/469360/…
icarus

11
ส่วนใหญ่ OP พบว่าพฤติกรรมน่ารำคาญโดยทั่วไป ฉันคิดว่าหนึ่งสามารถตั้งค่าตัวแปรสภาพแวดล้อมexport PAGER='less -FRSX'และ git จะให้เกียรติมัน (ขาด git config เฉพาะ) Btw -Sเป็นสิ่งที่อันตรายเพราะมันเงียบไปที่เอาท์พุท
ปีเตอร์ - Reinstate Monica

4

มีคำตอบที่ดีสำหรับการปรับจูนlessพฤติกรรมที่นี่ แต่เนื่องจากนิ้วมือสีเทาของฉันคุ้นเคยกับการพิมพ์|moreเมื่อฉันต้องการและเนื่องจากฉันยังคงปรับตัวกับ Mercurial ได้ดีกว่า Git ฉันจึงกระตือรือร้น

git config --global core.pager cat

3
man page สำหรับgit-configสถานะที่ค่าของcore.pagerตั้งใจที่จะถูกตีความโดยเชลล์ เมื่อคุณตั้งค่าเป็นมันจะnoพยายามเรียกใช้งานคำสั่งnoซึ่งส่วนใหญ่ไม่มีอยู่จากนั้นจะย้อนกลับไปที่เพียงแค่แสดงผลเนื้อหา คุณจะยังเห็นข้อความแสดงข้อผิดพลาดที่ส่วนหัว สิ่งที่คุณอาจต้องทำคือตั้งค่าcatเป็น
QIS

1
นั่นเป็นข้อมูลที่ดี แต่สิ่งที่ฉันชอบคือมันไม่ได้ทำอะไรเลย catไม่มีประโยชน์และฉันไม่ได้โดยเฉพาะอย่างยิ่งไว้วางใจลินุกซ์ util ดูแลไม่ได้ที่จะเปลี่ยนแปลงสิ่งที่แมวไม่ (cf อ้างไฟล์น้ำท่วม ) บางทีฉันควรใช้ "ไม่เคย" แทน มีโอกาสน้อยที่โปรแกรมดังกล่าวจะมีอยู่ ls
dgc

7
การตั้งค่าcore.pagerเป็นสตริงว่างเปล่า ( git config core.pager '') หรือเป็นcatจะไม่ทำงานอะไรเลย คุณสามารถทำงานได้ด้วยตัวคุณเองถ้าคุณไม่เชื่อฉัน ;-) ไม่มีเหตุผลใด ๆ noในการตั้งค่าให้คำสั่งหุ่นที่ไม่เหมือนใครคือ
mosvy

เยี่ยมมากขอบคุณ! ฉันไม่รู้ว่าสตริงว่างจะทำให้ไม่มีการดำเนินการคำสั่ง ในฐานะที่เป็นcatคุณกำลังบอกว่าคอมไพล์มีกรณีพิเศษสำหรับสตริงในรหัสเพจเจอร์ที่ - คือว่าcatมีประสิทธิภาพไวพจน์ "null" หรือไม่? catฉันจะคาดว่าจะดำเนินการ
dgc

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