คุณเพียงแค่ต้องแน่ใจว่าที่เก็บรู้ว่าต้นไม้ทำงานอยู่ที่ไหนและในทางกลับกัน
core.worktree
เพื่อให้ความรู้ในพื้นที่เก็บข้อมูลที่ต้นไม้การทำงานคือการตั้งค่าการกำหนดค่า หากต้องการให้แผนผังการทำงานทราบว่าเป็นไดเรกทอรี git ใดให้เพิ่มไฟล์ชื่อ. git (ไม่ใช่โฟลเดอร์!) และเพิ่มบรรทัดเช่น
gitdir: /path/to/repo.git
ตั้งแต่ git 1.7.5 คำสั่ง init ได้เรียนรู้ตัวเลือกเพิ่มเติมสำหรับสิ่งนี้
คุณสามารถเริ่มต้นพื้นที่เก็บข้อมูลใหม่แยกด้วย
git init --separate-git-dir /path/to/repo.git
สิ่งนี้จะเริ่มต้นที่เก็บ git ในไดเรกทอรีแยกและเพิ่มไฟล์. git ในไดเรกทอรีปัจจุบันซึ่งเป็นไดเรกทอรีทำงานของที่เก็บใหม่
ก่อนหน้า 1.7.5คุณต้องใช้พารามิเตอร์ที่แตกต่างกันเล็กน้อยและเพิ่มไฟล์. git ด้วยตัวคุณเอง
ในการเริ่มต้นที่เก็บแยกต่างหากคำสั่งต่อไปนี้จะเชื่อมโยงแผนผังต้นไม้กับที่เก็บ:
git --git-dir=/path/to/repo.git --work-tree=. init && echo "gitdir: /path/to/repo.git" > .git
/path/to/repo.git
ไดเรกทอรีปัจจุบันของคุณจะเป็นต้นไม้ที่ทำงานและการคอมไพล์จะใช้พื้นที่เก็บข้อมูลที่ คำสั่ง init จะตั้งค่าโดยอัตโนมัติcore.worktree
ตามที่ระบุไว้กับ--git-dir
พารามิเตอร์
คุณสามารถเพิ่มชื่อแทนสำหรับสิ่งนี้:
[alias]
initexternal = !"f() { git --work-tree=. --git-dir=\"$1\" init && echo \"gitdir: $1\" >> .git; }; f"
ใช้การควบคุมเวอร์ชัน git ในไดเรกทอรีการทำงานแบบอ่านอย่างเดียว
ด้วยความรู้ด้านบนคุณสามารถตั้งค่าการควบคุมเวอร์ชัน git สำหรับไดเรกทอรีทำงานโดยไม่ต้องมีสิทธิ์ในการเขียน หากคุณใช้--git-dir
กับทุกคำสั่ง git หรือดำเนินการทุกคำสั่งจากภายในที่เก็บข้อมูล (แทนไดเรกทอรีทำงาน) คุณสามารถออกจากไฟล์. git และไม่จำเป็นต้องสร้างไฟล์ใด ๆ ภายในไดเรกทอรีการทำงาน เห็นด้วยคำตอบ Leos