Git Worktrees

ทำงานบนหลาย branches พร้อมกันโดยไม่ต้อง stash — แต่ละตัวในโฟลเดอร์ของตัวเอง

Worktrees แก้ปัญหาที่น่าหงุดหงิดที่สุดปัญหาหนึ่งในการพัฒนารายวัน: ความจำเป็นในการสลับ branch เมื่อคุณกำลังทำบางอย่างอยู่กลางคัน ด้วย worktrees คุณไม่ต้องสลับ — คุณเปิดอีก branch ในโฟลเดอร์ที่สองและทำงานทั้งสองพร้อมกัน

Git Worktree คืออะไร?

โดยปกติ git repository มี working directory เดียว — โฟลเดอร์ที่ไฟล์ของคุณอยู่ ณ เวลาใดเวลาหนึ่ง มี branch เดียวเท่านั้นที่ checkout ในโฟลเดอร์นั้น หากคุณต้องการดู branch อื่น คุณต้อง checkout ซึ่งแทนที่ไฟล์ของคุณด้วยเวอร์ชันของ branch นั้น หากคุณยังไม่ได้ commit งานปัจจุบันของคุณ คุณต้อง stash ก่อน ซึ่งน่าหงุดหงิดและเกิดข้อผิดพลาดง่าย

Worktree คือ working directory ที่สอง (หรือสาม หรือสี่) ที่เชื่อมโยงกับ git repository เดียวกัน แต่ละ worktree มี branch ของตัวเอง checkout สถานะไฟล์ของตัวเอง และ history ของตัวเอง พวกมันทั้งหมดแชร์โฟลเดอร์ .git และ commit history เดียวกัน — พวกมันเป็นเพียงหน้าต่างต่างกันเข้าไปใน repo เดียวกัน

ตัวอย่างที่เป็นรูปธรรม: AI agent ของคุณกำลังสร้างฟีเจอร์ใหม่ครึ่งทางบน feature/payments เพื่อนร่วมงานขอให้คุณรีวิว PR ของพวกเขาบน fix/login-bug แทนที่จะ stash งานฟีเจอร์ของคุณ คุณสร้าง worktree สำหรับ fix/login-bug ในโฟลเดอร์แยก คุณรีวิว PR ที่นั่นขณะที่ branch ฟีเจอร์ของคุณยังคง untouched ในโฟลเดอร์เดิม

สร้าง Worktree

  1. เปิด Git panel — กด Cmd+G
  2. คลิกแท็บ Worktrees ด้านบนของ panel
  3. คลิก + Add Worktree
  4. เลือก branch — branch ที่มีอยู่จากรายการหรือพิมพ์ชื่อ branch ใหม่เพื่อสร้าง
  5. เลือกตำแหน่งโฟลเดอร์สำหรับ worktree ใหม่ (โดยค่าเริ่มต้น 1DevTool แนะนำโฟลเดอร์ถัดจากโฟลเดอร์โปรเจกต์ปัจจุบันของคุณ)
  6. คลิก Create — 1DevTool รัน git worktree add และเปิดโฟลเดอร์ worktree ใหม่เป็น workspace ที่ใช้งานอยู่

Worktree ใหม่ตอนนี้แสดงอยู่ในแท็บ Worktrees คู่กับ worktree หลักของคุณ

Git worktree

Terminals ของ Worktree

เมื่อ 1DevTool สร้าง worktree มันยังเปิด terminal ใหม่ที่ scope ไปยังโฟลเดอร์ของ worktree นั้น ชื่อ branch ปรากฏในชื่อ terminal เพื่อให้คุณรู้เสมอว่าคุณกำลังทำงานกับ branch ใด

AI agent ของคุณใน terminal นั้นทำงานในโฟลเดอร์ worktree — มันสามารถอ่านและเขียนไฟล์ รันคำสั่ง และทำการเปลี่ยนแปลงบน branch นั้นโดยไม่มีความรู้หรือรบกวน branches อื่นของคุณ

เพิ่ม terminal สำหรับ git worktree

Git worktree terminal พร้อมชื่อ branch

คุณสามารถรัน agents ในหลาย worktrees พร้อมกัน Agent หนึ่งทำงานบนฟีเจอร์ payments ขณะที่อีกตัวแก้ไข bug บน branch อื่น Agents ทั้งสองมี terminal ของตัวเอง context ไฟล์ของตัวเอง และ branch ของตัวเอง — พวกมันไม่สามารถขัดแย้งกันได้

ลบ Worktree

เมื่อคุณเสร็จกับ worktree — PR merge แล้ว branch ถูกลบ — คุณสามารถลบมันได้อย่างสะอาด:

  1. เปิด Git panel และไปที่แท็บ Worktrees
  2. หา worktree ที่คุณต้องการลบ
  3. คลิก ไอคอนถังขยะ ข้างมัน
  4. ยืนยันการลบ

สิ่งนี้ลบโฟลเดอร์ worktree และ deregister มันจาก git (เทียบเท่า git worktree remove) Branch เองไม่ถูกลบ — เฉพาะ working directory คุณสามารถสร้าง worktree ใหม่ทีหลังหากจำเป็น

เคล็ดลับ: ใช้ worktrees เพื่อรัน AI agent ของคุณบน feature branch ในขณะที่เก็บ main stable Agent ไม่สามารถทำลาย branch main ของคุณโดยไม่ได้ตั้งใจ

Worktrees เป็นหนึ่งในฟีเจอร์ที่ใช้least ของ git ในบริบทของการพัฒนาที่ช่วยเหลือด้วย AI — ที่ agent อาจทำการเปลี่ยนแปลงไฟล์หลายสิบครั้งในนาที — ความสามารถในการแยกงานของ agent แต่ละตัวไปยัง branch และโฟลเดอร์ของตัวเองเป็น safety net ที่สำคัญ