Pertanyaan ini mirip dengan pertanyaan ini , tetapi lebih spesifik.
Saya memiliki proyek dengan dua cabang ( staging
dan beta
).
Saya mengembangkan staging
, dan menggunakan master
cabang untuk memperbaiki bug. Jadi jika saya sedang mengerjakan pementasan dan saya melihat kesalahan, saya mengubah ke master
cabang:
git checkout master
dan lakukan hal-hal:
git add fileToAdd
git commit -m "bug fixed"
dan kemudian saya menggabungkan dengan kedua cabang:
git checkout staging
git merge master
git checkout beta
git merge beta
Dan tidak masalah jika ada file lain di pohon kerja.
Tetapi sekarang, ketika saya mencoba untuk mengubah ke master
cabang, saya mendapatkan kesalahan :
error: Your local changes to the following files would be overwritten by checkout:
src/Pro/ConvocationBundle/Controller/DefaultController.php
Please, commit your changes or stash them before you can switch branches.
Aborting
Saya pikir saya harus menghapus file dari area pementasan:
git reset HEAD src/Pro/ConvocationBundle/Controller/DefaultController.php
tapi saya mendapatkan kesalahan yang sama. Jika saya melakukan git status
saya mendapatkanNo changes to commit
git
git-checkout
Manolo
sumber
sumber
reset --hard
? Jika Anda benar-benar yakin ingin membuang perubahan Anda. Atau gunakan simpanan jika tidak.git add your-file
dan lakukan.staging
sekarang.Jawaban:
Kesalahan Anda muncul ketika Anda telah mengubah file dan cabang tempat Anda beralih juga memiliki perubahan untuk file ini (dari titik gabungan terbaru).
Pilihan Anda, seperti yang saya lihat, adalah - komit, dan kemudian ubah komit ini dengan perubahan tambahan (Anda bisa memodifikasi komit di git, selama tidak
push
diedit); atau - gunakan simpanan:git stash save
akan membuat simpanan yang berisi perubahan Anda, tetapi tidak terkait dengan komit atau bahkan cabang apa pun.git stash pop
akan menerapkan entri simpanan terbaru ke cabang Anda saat ini, memulihkan perubahan yang disimpan dan menghapusnya dari simpanan.sumber
add
saat sebenarnyasave
.. diperbarui. Maksud Anda, untuk file lain?git stash save
tanpa parameter nama file akan menyimpan semua file yang diubah, jika Anda ingin (dan mengembalikannya ke status terakhir-komit). Dan memiliki salinan tambahan dari pohon direktori tidak ada salahnya, tapi saya selalu paranoid tentang itu.master
cabang. Juga, pilihannya adalahpop
perubahan di cabang lain?master
, tetapi dengan melakukan itu akan kehilangan kontennya saat ini, dan karena konten ini tidak dilakukan, tidak mungkin untuk kembali ke status ini nanti, karena itu terjadi kesalahan sehingga Anda tidak akan kecewa karena perubahan yang hilang nanti.Saya mengalami masalah yang sama dan menyelesaikannya dengan
dan spesifikasinya agak jelas.
sumber
Anda dapat memaksa checkout cabang Anda, jika Anda tidak ingin mengkomit perubahan lokal Anda.
sumber
sudo
perlu, itu hanya akan merusak izin file. Itu adalah perintah git yang sama seperti yang diposting oleh @kiki_yu satu tahun sebelumnya, tetapi bahkan lebih buruk.Hati-hati dengan
-f
sakelar. Anda akan kehilangan semua perubahan yang tidak mengikat jika Anda menggunakan-f
sakelar. Meskipun mungkin ada beberapa kasus penggunaan yang berguna untuk digunakan-f
, dalam banyak kasus, Anda mungkin inginstash
mengubah dan kemudianswitch
bercabang. Thestashing
prosedur yang dijelaskan di atas.sumber
Anda dapat mengkomit di cabang saat ini, melakukan checkout ke cabang lain, dan akhirnya memilih ceri komit itu (sebagai pengganti penggabungan).
sumber
Jika Anda mendapatkan ini saat mencoba memeriksa cabang yang berbeda:
Ini berarti Anda memiliki beberapa perubahan yang perlu Anda lakukan pada cabang yang telah Anda periksa - atau Anda perlu menghapus atau menyimpannya seperti yang ditunjukkan sebagian besar poin di atas. 19 dari 20 kali saya jauh lebih cenderung hanya melakukan perubahan saya.
Sekarang setelah Anda selesai melakukannya, Anda dapat memeriksa cabang lain dan beralih bolak-balik dengan cukup mudah.
Pastikan Anda berdua berada di cabang kanan dan mendorong ke cabang kanan saat Anda menjalankan perintah git push origin $ {branch}. Catatan: jika proyek Anda terhubung langsung ke Intellij, Anda dapat melihat bahwa Anda mengubah cabang Anda di sudut kanan bawah jendela utama.
sumber