เมื่อเทียบกับรุ่นก่อนหน้า เวอร์ชันใหม่มีการเปลี่ยนแปลง 504 รายการ ซึ่งเตรียมโดยการมีส่วนร่วมของนักพัฒนา 64 คน โดย 12 คนมีส่วนร่วมในการพัฒนาเป็นครั้งแรก
- ค่าเริ่มต้นถูกเปลี่ยนเป็น
รุ่นที่สอง โปรโตคอลการสื่อสาร Git ซึ่งใช้เมื่อไคลเอนต์เชื่อมต่อกับเซิร์ฟเวอร์ Git จากระยะไกล เวอร์ชันที่สองของโปรโตคอลมีความโดดเด่นในด้านความสามารถในการกรองสาขาและแท็กบนฝั่งเซิร์ฟเวอร์ โดยส่งคืนรายการลิงก์แบบสั้นไปยังไคลเอนต์ ก่อนหน้านี้ คำสั่ง pull จะส่งรายการอ้างอิงทั้งหมดในที่เก็บทั้งหมดถึงไคลเอ็นต์เสมอ แม้ว่าไคลเอ็นต์จะอัปเดตเพียงสาขาเดียวหรือตรวจสอบว่าสำเนาของที่เก็บเป็นข้อมูลล่าสุดก็ตาม นวัตกรรมที่โดดเด่นอีกประการหนึ่งคือความสามารถในการเพิ่มความสามารถใหม่ให้กับโปรโตคอลเมื่อมีฟังก์ชันการทำงานใหม่ในชุดเครื่องมือ รหัสไคลเอนต์ยังคงเข้ากันได้กับโปรโตคอลเก่าและสามารถทำงานกับเซิร์ฟเวอร์ทั้งเก่าและใหม่ต่อไปได้ โดยจะถอยกลับไปเป็นเวอร์ชันแรกโดยอัตโนมัติหากเซิร์ฟเวอร์ไม่รองรับเซิร์ฟเวอร์ตัวที่สอง - เพิ่มตัวเลือก "-show-scope" ให้กับคำสั่ง "git config" แล้ว ทำให้ง่ายต่อการระบุตำแหน่งที่มีการกำหนดการตั้งค่าบางอย่าง Git ช่วยให้คุณสามารถกำหนดการตั้งค่าในตำแหน่งต่างๆ: ในที่เก็บ (.git/info/config) ในไดเร็กทอรีผู้ใช้ (~/.gitconfig) ในไฟล์การกำหนดค่าทั้งระบบ (/etc/gitconfig) และผ่านคำสั่ง ตัวเลือกบรรทัดและตัวแปรสภาพแวดล้อม เมื่อดำเนินการ "git config" เป็นการยากที่จะเข้าใจว่าการตั้งค่าที่ต้องการถูกกำหนดไว้ที่ไหน เพื่อแก้ไขปัญหานี้ ตัวเลือก "--show-origin" ใช้งานได้ แต่จะแสดงเฉพาะเส้นทางไปยังไฟล์ที่มีการกำหนดการตั้งค่าไว้ ซึ่งมีประโยชน์หากคุณต้องการแก้ไขไฟล์ แต่ไม่ได้ช่วยอะไรหากคุณ จำเป็นต้องเปลี่ยนค่าผ่าน "git config" โดยใช้ตัวเลือก "--system", "--global" หรือ "-local" ตัวเลือกใหม่ "--show-scope" จะแสดงบริบทคำจำกัดความของตัวแปรและสามารถใช้ร่วมกับ -show-origin:
$ git --list --show-scope --show-origin
ไฟล์โกลบอล:/home/user/.gitconfig diff.interhunkcontext=1
ไฟล์โกลบอล:/home/user/.gitconfig push.default=current
[…] local file:.git/config branch.master.remote=origin
ไฟล์ในเครื่อง:.git/config branch.master.merge=refs/heads/master$ git config --show-scope --get-regexp 'diff.*'
diff.statgraphwidth ทั่วโลก 35
ท้องถิ่น diff.colormoved ธรรมดา$ git config --global --unset diff.statgraphwidth
- ในการตั้งค่าการเข้าเล่ม
ข้อมูลรับรอง อนุญาตให้ใช้มาสก์ใน URL การตั้งค่า HTTP และข้อมูลรับรองใน Git สามารถตั้งค่าได้ทั้งสำหรับการเชื่อมต่อทั้งหมด (http.extraHeader, credential.helper) และสำหรับการเชื่อมต่อที่ใช้ URL (credential.https://example.com.helper, credential.https: //example. com.ผู้ช่วย) จนถึงขณะนี้ ไวด์การ์ด เช่น *.example.com ได้รับอนุญาตสำหรับการตั้งค่า HTTP เท่านั้น แต่ไม่รองรับการผูกข้อมูลรับรอง ใน Git 2.26 ความแตกต่างเหล่านี้จะถูกกำจัดออกไป ตัวอย่างเช่น หากต้องการผูกชื่อผู้ใช้กับโดเมนย่อยทั้งหมด คุณสามารถระบุได้:[ข้อมูลรับรอง "https://*.example.com"]
ชื่อผู้ใช้ = taylorr
- การขยายการสนับสนุนการทดลองสำหรับการโคลนบางส่วน (โคลนบางส่วน) ยังคงดำเนินต่อไป ช่วยให้คุณสามารถถ่ายโอนข้อมูลเพียงบางส่วนและทำงานกับสำเนาของพื้นที่เก็บข้อมูลที่ไม่สมบูรณ์ รุ่นใหม่เพิ่มคำสั่งใหม่ "git sparse-checkout add" ซึ่งช่วยให้คุณสามารถเพิ่มไดเร็กทอรีแต่ละรายการเพื่อใช้การดำเนินการ "ชำระเงิน" กับเพียงส่วนหนึ่งของแผนผังการทำงาน แทนที่จะแสดงรายการไดเร็กทอรีดังกล่าวทั้งหมดในคราวเดียวผ่านคำสั่ง "git" ชุดการชำระเงินแบบกระจัดกระจาย" (คุณสามารถเพิ่มไดเร็กทอรีได้ทีละไดเร็กทอรี โดยไม่ต้องระบุรายการทั้งหมดซ้ำในแต่ละครั้ง)
ตัวอย่างเช่น หากต้องการโคลนที่เก็บ git/git โดยไม่ต้องคอมมิต Blob การจำกัดการเช็คเอาท์เฉพาะไดเร็กทอรีรากของสำเนาที่ใช้งานได้ และการทำเครื่องหมายการเช็คเอาต์สำหรับไดเร็กทอรี "t" และ "Documentation" แยกต่างหาก คุณสามารถระบุ:$ git clone --filter=blob:none --sparse [ป้องกันอีเมล]:git/git.git
$ ซีดีคอมไพล์
$ git sparse-checkout init --cone$ git sparse-checkout เพิ่ม t
....
$ git sparse-checkout เพิ่มเอกสารประกอบ
....
$ git รายการชำระเงินแบบกระจัดกระจาย
เอกสาร
t - ประสิทธิภาพของคำสั่ง “git grep” ที่ใช้ในการค้นหาทั้งเนื้อหาปัจจุบันของที่เก็บและการแก้ไขประวัติได้รับการปรับปรุงอย่างมีนัยสำคัญ เพื่อเร่งการค้นหา เป็นไปได้ที่จะสแกนเนื้อหาของแผนผังการทำงานโดยใช้หลายเธรด (“git grep –threads”) แต่การค้นหาในการแก้ไขที่ผ่านมาเป็นแบบเธรดเดียว ขณะนี้ข้อจำกัดนี้ได้ถูกลบออกแล้วโดยการใช้ความสามารถในการดำเนินการอ่านแบบขนานจากที่เก็บข้อมูลอ็อบเจ็กต์ ตามค่าเริ่มต้น จำนวนเธรดจะถูกตั้งค่าเท่ากับจำนวนคอร์ CPU ซึ่งโดยส่วนใหญ่แล้วไม่จำเป็นต้องตั้งค่าตัวเลือก "-threads" อย่างชัดเจน
- เพิ่มการสนับสนุนสำหรับการเติมข้อมูลอัตโนมัติของคำสั่งย่อย เส้นทาง ลิงก์ และอาร์กิวเมนต์อื่นๆ ของคำสั่ง "git worktree" ซึ่งช่วยให้คุณทำงานกับสำเนาการทำงานหลายชุดของพื้นที่เก็บข้อมูล
- เพิ่มการรองรับสีสดใสที่มีลำดับหลีก ANSI ตัวอย่างเช่น ในการตั้งค่าสำหรับสีไฮไลต์ “git config –color” หรือ “git diff –color-moved” คุณสามารถระบุ “%C(brightblue)” ผ่านตัวเลือก “--format” สำหรับสีฟ้าสดใส
- เพิ่มสคริปต์เวอร์ชันใหม่แล้ว
fsmonitor-ยาม โดยให้บูรณาการเข้ากับกลไกเฟซบุ๊ก วอทช์แมน เพื่อเร่งการติดตามการเปลี่ยนแปลงไฟล์และลักษณะที่ปรากฏของไฟล์ใหม่ หลังจากอัพเดต git แล้วเพื่อแทนที่ ขอในพื้นที่เก็บข้อมูล - เพิ่มการเพิ่มประสิทธิภาพเพื่อเร่งความเร็วการโคลนบางส่วนเมื่อใช้บิตแมป
(เครื่องจักรบิตแมป) เพื่อหลีกเลี่ยงการค้นหาวัตถุทั้งหมดโดยสมบูรณ์เมื่อกรองเอาต์พุต การตรวจสอบ blobs (—filter=blob:none และ —filter=blob:limit=n) ในระหว่างการโคลนบางส่วนได้ดำเนินการแล้ว
เร็วขึ้นอย่างเห็นได้ชัด GitHub ประกาศแพตช์พร้อมการเพิ่มประสิทธิภาพเหล่านี้และการสนับสนุนการทดลองสำหรับการโคลนบางส่วน - คำสั่ง "git rebase" ถูกย้ายไปยังแบ็กเอนด์อื่น โดยใช้กลไกเริ่มต้น 'ผสาน' (ก่อนหน้านี้ใช้สำหรับ "rebase -i") แทน 'patch+apply' แบ็กเอนด์จะแตกต่างกันเล็กน้อย เช่น หลังจากดำเนินการต่อไปหลังจากแก้ไขข้อขัดแย้ง (git rebase --continue) แบ็กเอนด์ใหม่จะเสนอให้แก้ไขข้อความคอมมิต ในขณะที่อันเก่าเพียงแต่ใช้ข้อความเก่า หากต้องการเปลี่ยนกลับไปใช้พฤติกรรมแบบเก่า คุณสามารถใช้ตัวเลือก "--apply" หรือตั้งค่าตัวแปรการกำหนดค่า 'rebase.backend' เป็น 'apply'
- ตัวอย่างของตัวจัดการสำหรับพารามิเตอร์การตรวจสอบสิทธิ์ที่ระบุผ่าน .netrc ได้รับการลดขนาดให้เป็นรูปแบบที่เหมาะสำหรับการใช้งานนอกกรอบ
- เพิ่มการตั้งค่า gpg.minTrustLevel เพื่อกำหนดระดับความน่าเชื่อถือขั้นต่ำสำหรับองค์ประกอบต่างๆ ที่ทำการตรวจสอบลายเซ็นดิจิทัล
- เพิ่มตัวเลือก "--pathspec-from-file" เป็น "git rm" และ "git stash"
- การปรับปรุงชุดทดสอบยังคงดำเนินต่อไปเพื่อเตรียมการเปลี่ยนไปใช้อัลกอริธึมการแฮช SHA-2 แทน SHA-1
ที่มา: opennet.ru