Pertanyaan Git membuat cabang dari master yang diperiksa saat ini?


Ada folder git controlled pada server di mana cabang utama diperiksa dan seluruh tumpukan file telah dimodifikasi dan tidak dilakukan. Apakah ada cara bagi saya untuk melakukan perubahan pada cabang terpisah sehingga saya dapat kembali ke versi bersih?

yaitu saya ingin secara efektif membatalkan semua perubahan orang ini tetapi menyimpannya di kesempatan lain sehingga jika orang itu menginginkan perubahan mereka, mereka dapat beralih ke cabang itu.

(Ya, saya tahu ini bukan bagaimana git dirancang untuk bekerja tetapi itu adalah situasi saya!) Setiap ide sangat dihargai.


75
2017-09-21 06:41


asal


Jawaban:


Pertama-tama pindah ke cabang yang berbeda berdasarkan HEAD saat ini dilakukan seperti ini:

git checkout -b newbranch

Komit semua perubahan (dengan asumsi tidak ada file yang baru ditambahkan, sebaliknya git add mereka):

git commit -a

Kembali ke cabang utama:

git checkout master

Perubahan yang tidak terikat sebelumnya semuanya akan berada di cabang cabang baru, dan master akan tetap pada kondisi tanpa perubahan tersebut.


132
2017-09-21 06:52



Metode ini berguna:

git checkout -B <new_branch> <start point>

Dimana:

  • <new_branch> adalah cabang baru Anda (mis. my_branch)
  • <start point> adalah cabang awal Anda (master dalam kasus Anda)
  • -B membuat cabang baru dimulai dari <start point>, jika sudah ada, lalu setel ulang ke (tidak akan gagal karena -b ketika cabang sudah ada)
  • terkadang -m dapat berguna untuk menentukan ketika berpindah cabang, ini akan melakukan penggabungan tiga-cara antara cabang saat ini, isi pohon kerja Anda (berguna untuk scripting).

Lihat: man git-checkout untuk lebih jelasnya.


14
2018-01-17 14:05



Anda selalu dapat menyimpan perubahan Anda.

git stash
git checkout -b bravenewmaster
git stash apply

Juga perlu diingat, bahwa jika Anda berkomitmen untuk cabang "salah" Anda selalu dapat memindahkan cabang itu kembali, karena cabang tidak lain hanyalah penunjuk ke komit.


13
2017-09-21 06:45