Sambil membantu seorang teman dengan masalah git hari ini, saya harus memperkenalkan cabang yang harus benar-benar terpisah dari master
cabang. Isi cabang ini benar-benar memiliki asal yang berbeda dari apa yang telah dikembangkan di master
cabang, tetapi mereka akan digabung ke master
cabang di lain waktu.
Saya ingat dari membaca Git John Wiegley dari bawah ke atas bagaimana cabang pada dasarnya adalah label untuk komit yang mengikuti konvensi tertentu dan bagaimana komit diikat ke pohon file dan, opsional untuk komitmen induk. Kami pergi untuk membuat commit tanpa induk ke repositori yang ada menggunakan pipa git:
Jadi kami menyingkirkan semua file dalam indeks ...
$ git rm -rf .
... mengekstrak direktori dan file dari tarball, menambahkannya ke indeks ...
$ git add .
... dan membuat objek pohon ...
$ git write-tree
( git-write-tree
memberi tahu kami sha1sum dari objek pohon yang dibuat.)
Kemudian, Kami melakukan pohon, tanpa menentukan komitmen orang tua ...
$ echo "Imported project foo" | git commit-tree $TREE
( git-commit-tree
memberi tahu kami sha1sum dari objek commit yang dibuat.)
... dan membuat cabang baru yang menunjuk ke komit kami yang baru dibuat.
$ git update-ref refs/heads/other-branch $COMMIT
Akhirnya, kami kembali ke master
cabang untuk melanjutkan pekerjaan di sana.
$ git checkout -f master
Ini tampaknya telah bekerja sesuai rencana. Tapi ini jelas bukan jenis prosedur yang saya sarankan kepada seseorang yang baru mulai menggunakan git, untuk membuatnya lebih sederhana. Apakah ada cara yang lebih mudah untuk membuat cabang baru yang sepenuhnya tidak terkait dengan semua yang telah terjadi di repositori sejauh ini?