การจัดเก็บ git config เป็นส่วนหนึ่งของที่เก็บ


147

ฉันใช้ฟิลเตอร์เพื่อไฟล์ฉีกระหว่างการชำระเงินเช่นอธิบายไว้ที่นี่ ตอนนี้ปัญหาคือคำจำกัดความของตัวกรองจะถูกเก็บไว้ในแฟ้มการกำหนดค่าท้องถิ่นของฉันเท่านั้น:

$ cat .git/config
....
[filter "dater"]
        smudge = /home/.../expand_date
        clean = perl -pe \"s/\\\\\\$Date[^\\\\\\$]*\\\\\\$/\\\\\\$Date\\\\\\$/\"

หากเพื่อนร่วมงานของฉันต้องการได้รับประโยชน์จากการDateขยายตัวนี้พวกเขาต้องคัดลอกคำจำกัดความตัวกรองของฉัน และถ้าฉันเปลี่ยนฉันต้องแจ้งให้ทราบ ฯลฯ

ดังนั้นฉันสามารถเก็บคำจำกัดความตัวกรองนี้.git/configไว้ในที่เก็บและใช้ git ได้หรือไม่


คุณอาจพบว่าลิงก์นี้มีประโยชน์ในการแบ่งปันการกำหนดค่าทั่วทั้งทีมโดยอัตโนมัติ
mljrg

คำตอบ:


163

มี 3 ขอบเขตของการสนับสนุนเป็นไฟล์:.gitconfig --system, --global, --localคุณยังสามารถสร้างไฟล์กำหนดค่าเองและรวมไว้ในหนึ่งในไฟล์ที่รองรับ

สำหรับความต้องการของคุณเอง - เป็นตัวเลือกที่เหมาะสม แทนที่จะเขียนตัวกรองของ.git/configคุณคุณควรบันทึกไว้ใน.gitconfigไฟล์ในที่เก็บรากของคุณ:

your-repo/
│
├── .git/
│   ├── config
│
├── .gitconfig
│

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

หากต้องการใช้การกำหนดค่านี้สำหรับที่เก็บเดียวผู้ใช้แต่ละคนจะต้องเรียกใช้คำสั่งต่อไปนี้ในyour-repo/:

git config --local include.path ../.gitconfig

ระวังจะไม่เก็บข้อมูลส่วนบุคคลในการที่กำหนดเอง.gitconfigเช่นให้ผู้ที่อยู่ในโลกของคุณuser.*.gitconfig


40
ฉันต้องการหลีกเลี่ยงการแจ้งผู้ใช้ที่เป็นไปได้แต่ละรายว่าจำเป็นต้องรวม repo .gitconfigไว้ใน~/.gitconfigตัว ไม่มีใครจำได้ .gitconfigมีวิธีที่จะทำให้คอมไพล์เสมออ่านของธุรกรรมซื้อคืนที่
Zaar Hai

9
@ZaarHai: ฉันคาดเดาไม่ได้เพราะนั่นจะเป็นอันตราย (ลองนึกภาพการโคลน repo ที่นามแฝงสั่งด้วยสิ่งที่ "น่าสนใจ" เช่นการส่งออกเนื้อหาของ dir บ้านของคุณ) หากคุณมีบางอย่างเช่นconfigureสคริปต์หรือสิ่งที่คล้ายกันซึ่งผู้ใช้ต้องเรียกใช้คุณสามารถกำหนดให้มีการรวม (หรือแจ้งให้ผู้ใช้ทำ)
Hasturkun

4
@ HenryBlyth ดูเหมือนว่าจะมี--fileตัวเลือกอยู่git configคุณสามารถตั้งค่าให้ชี้ไปที่ repo ของ.gitconfigคุณได้ ฉันยังไม่ได้ทดสอบ แต่ดูเหมือนจะตอบคำถามของคุณ คุณสามารถอ่านได้ในเอกสาร git-scm.com/docs/git-config#FILES
theUnknown777

12
ดีถ้า Git ไม่คิดว่าคุณกำลังเขียนรหัสแจกจ่ายนอกองค์กรที่คุณต้องใส่ใจกับภัยคุกคามความปลอดภัย บางครั้งการใช้งานระบบและระบบอัตโนมัติมีความสำคัญสูงกว่าความปลอดภัย
Geordie

2
คุณสามารถเพิ่มคำสั่งในงานได้อย่างไม่แน่นอน (สมมติว่าคุณกำลังใช้งานนักวิ่ง) ที่ทีมของคุณใช้เป็นประจำ
Mieszko

19

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

คุณสามารถเชื่อมโยงกับมันได้เช่น:

[include]
  path = ../.gitconfig

ผมได้สร้างง่ายๆสคริปต์ gitconfig.shที่ทำเพื่อคุณ (เร็วกว่าสำเนา) + ง่าย.gitconfigไฟล์ดังนั้นหากคุณต้องการให้ดูนี้ repo https://github.com/HoBi/dotfiles


แก้ไข : ฉันลบไฟล์แล้ว แต่คุณสามารถหาได้ที่นี่https://github.com/tenhobi/dotfiles/blob/7e4376c006c508370b82bc7bd37173fab51dbd01/git/.gitconfig.sh


@XmlmXmlmX แก้ไขแล้ว :-)
tenhobi

@HoBi ดูเหมือนว่าตอนนี้คุณได้ลบ gitconfig.sh ของคุณออกจาก GitHub แล้วทำไมคุณไม่ต้องการมันอีกต่อไป?
สามเณร C

1
@NoviceC มีไฟล์ถ้าคุณต้องการมัน github.com/HoBi/dotfiles/blob/… ฉันเชื่อว่าคุณไม่ควรเก็บ. gitconfig หรือ gitconfig.sh ในโครงการ git ของคุณ - นี่เป็นการตั้งค่าส่วนบุคคลและควรเก็บไว้ในการตั้งค่าส่วนกลางของคุณใน~/โฟลเดอร์ และทุกคนอาจมีความต้องการที่แตกต่างกันดังนั้นทำไมรบกวนทุกคนด้วย config ของคุณใน git repo :-)
tenhobi

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