Untuk mengerjakan branch kedua tanpa mengganggu checkout proyek Mac Anda saat ini, buat Git worktree di folder yang berdekatan. Setiap worktree memiliki file dan branch checkout-nya sendiri, sambil tetap berbagi data repositori dengan checkout utama. Buat melalui Terminal, buka foldernya di Finder atau editor Anda, dan hapus dengan Git jika sudah selesai. Dokumentasi worktree Git
Apa yang diubah oleh worktree
Worktree memberi Anda direktori kerja lain yang terhubung ke repositori Git yang sama. Artinya, Anda dapat membiarkan, misalnya, checkout main Anda saat ini tetap terbuka sementara branch fitur memiliki folder dan file terpisah. Perubahan di satu direktori kerja tidak akan menimpa file yang di-checkout di direktori lainnya. Git berbagi data repositori, tetapi memisahkan status khusus worktree seperti indeks dan HEAD. Git: git-worktree
Branch dipakai bersama di seluruh worktree, dan branch lokal biasanya tidak dapat di-checkout di dua worktree sekaligus. Worktree cocok untuk tugas-tugas terpisah yang berjalan bersamaan; worktree bukanlah klona repositori yang independen. File yang diabaikan oleh Git, seperti konfigurasi lokal atau output build, mungkin perlu dibuat secara terpisah di folder baru.
Membuat worktree fitur di macOS
Buka Terminal dan masuk ke direktori proyek yang ada. Ganti my-app dengan nama direktori repositori Anda. Contoh ini mengasumsikan repositori berada di ~/Projects/my-app dan membuat checkout baru di sampingnya.
cd ~/Projects/my-app
git status --short
git worktree add -b feature/search-ui ../my-app-search-ui
Perintah status memungkinkan Anda melihat apakah checkout saat ini memiliki perubahan yang tertunda sebelum beralih konteks. Perintah add -b membuat branch lokal baru bernama feature/search-ui dan me-checkout-nya di direktori my-app-search-ui di sebelahnya. Git membuat branch dari HEAD saat ini jika tidak ada commit awal yang ditentukan. Pilih branch yang unik dan jalur tujuan yang belum digunakan. Git: worktree add
Untuk branch lokal yang sudah ada dan belum di-checkout di worktree lain, gunakan namanya alih-alih -b dan nama branch baru:
git worktree add ../my-app-search-ui existing-branch
Jika branch tersebut sudah di-checkout di tempat lain, Git secara default akan menolak. Jangan memaksakannya hanya untuk melewati pengaman tersebut; gunakan branch lain atau bekerjalah di checkout yang sudah memilikinya. Untuk membuat worktree bagi remote branch, ambil (fetch) remote terlebih dahulu jika diperlukan dan ikuti perilaku tracking-branch Git; verifikasi nama branch sebelum menambahkannya.
Membuka checkout baru di Finder dan editor Anda
Di Finder, navigasikan ke folder induk yang memuat kedua direktori proyek, lalu buka my-app-search-ui. Anda dapat menggunakan perintah Buka Folder di Finder (Shift-Command-G) dan memasukkan path lengkapnya, seperti ~/Projects/my-app-search-ui. Pastikan nama direktori tetap terlihat di Finder atau editor Anda agar Anda dapat membedakannya dari checkout asli.
Apple juga mendokumentasikan cara membuka Terminal pada folder yang dipilih dari Finder: tampilkan Baris Jalur dengan Lihat > Tampilkan Baris Jalur, Control-klik folder di Baris Jalur, lalu pilih Buka di Terminal. Untuk membuka jendela atau tab Terminal lainnya, gunakan Command-N atau Command-T. Lokasi folder yang dipilih akan menjadi direktori kerja untuk tindakan Finder tersebut. Apple: Membuka jendela dan tab Terminal baru di Mac
Buka folder baru sebagai proyek terpisah di editor Anda menggunakan kontrol buka folder yang terdokumentasi pada editor tersebut. Perilaku editor berbeda-beda; Git worktree tidak secara otomatis membuat jendela editor atau mengonfigurasi lingkungan pengembangan Anda. Direktori dependensi, file yang diabaikan, file lingkungan lokal, dan layanan yang sedang berjalan mungkin memerlukan penyiapan terpisah di setiap checkout.
Memeriksa checkout mana yang sedang Anda gunakan
Dari salah satu direktori proyek, jalankan:
git worktree list
Git akan mencantumkan worktree utama dan worktree yang ditautkan, termasuk path serta branch yang di-checkout. Sebelum melakukan commit atau menjalankan perintah yang mengubah file, konfirmasikan folder saat ini atau jalankan git status di sana. Pemeriksaan sederhana ini membantu mencegah kesalahan umum berupa pengeditan pada checkout asli padahal bermaksud bekerja di checkout baru. Git: worktree list
Menghapus worktree saat tugas selesai
Pertama, lakukan commit atau amankan pekerjaan apa pun yang Anda perlukan. Kemudian, dari worktree mana pun milik repositori tersebut, hapus checkout yang ditautkan berdasarkan jalurnya:
git worktree remove ../my-app-search-ui
git worktree list
Git biasanya menolak untuk menghapus worktree yang berisi file terlacak yang dimodifikasi atau file yang tidak terlacak (untracked). Tinjau dan amankan file-file tersebut sebelum penghapusan; --force akan mengesampingkan perlindungan Git dan dapat membuang pekerjaan Anda. Perintah ini menghapus direktori worktree, jadi jangan gunakan ini sebagai pengganti untuk memeriksa apa yang ada di dalamnya. Setelah dihapus, branch tetap tersedia di repositori kecuali jika dihapus secara terpisah. Git: worktree remove
Jika Anda menghapus folder worktree secara manual, Git mungkin masih menyimpan catatan administratifnya. Gunakan git worktree prune untuk membersihkan catatan yang sudah usang; gunakan git worktree remove untuk pembersihan normal. Jika Anda memindahkan checkout tertaut di Finder, Git mungkin kehilangan jejak lokasinya; gunakan git worktree move jika memungkinkan atau git worktree repair untuk menyambungkannya kembali. Git: worktree prune, move, dan repair
Pengaturan Mac yang praktis adalah satu folder worktree per tugas aktif, dengan nama folder dan branch yang pendek dan mudah dikenali. Pertahankan checkout utama untuk pekerjaannya saat ini, buat checkout berdampingan untuk tugas paralel, dan verifikasi jalurnya sebelum mengedit. Hal ini memberi setiap tugas file proyeknya sendiri tanpa perlu berulang kali mengganti branch di checkout asli.
Sumber
Membuka jendela dan tab Terminal baru di Mac — Dukungan Apple