Saya tidak berpengalaman dengan Git tetapi saya mencoba yang terbaik untuk membiasakan diri dengannya, dan sejauh ini saya hanya menggunakannya untuk proyek yang saya kerjakan sendiri.
Ketika saya kode ada beberapa pendekatan top-down secara alami (karena saya tidak tahu masa depan), dan ada tema yang berulang:
Saya melakukan beberapa pekerjaan.
Saya menemukan bahwa untuk menjadikan pekerjaan saya sesuatu yang "dapat dilakukan", saya perlu melakukan pekerjaan lain.
Pekerjaan lain layak untuk dilakukan sendiri.
Maksud saya adalah sesuatu yang mengkompilasi atau sesuatu yang tidak berantakan total.
Dan dengan sesuatu yang pantas dilakukan dengan komitmen sendiri, saya merujuk pada hal yang saya pelajari bahwa komitmen harus melakukan hanya satu hal.
Cara saya menyelesaikannya rumit. Jika pekerjaan lain ada di file lain saya membuat cabang baru, komit di sana, dan bergabung. Jika pekerjaan ada di file yang sama .. ugh .. Saya membuat salinan lokal dan mereset file ke keadaan di HEAD, buat komit yang diperlukan dan kemudian mulai mengembalikan pekerjaan saya dari salinan. Bagaimana seharusnya saya menanganinya? Saya tidak membayangkan ini jalannya, bukan? Saya tidak berasumsi demikian karena itu harus sering muncul ke semua orang (yang tidak tahu masa depan juga, setidaknya). Atau mungkin sepertinya alur kerja saya cenderung cacat?
git status
untuk melihat semua file yang diubah, dan membuat dua atau lebih melakukan dengan menggunakangit add
dengan file tertentu (bukangit add --all
), dan melakukan sepotong demi sepotong.git add -p
dan kemudian hanya melakukan bagian-bagian itu. Ini adalah teknik yang sangat kuat dan saya menggunakannya hampir setiap saat.Jawaban:
Ada beberapa cara untuk mengatasi ini.
Jika Anda ingin melakukan perubahan untuk komit pertama tanpa mengganggu perubahan Anda saat ini, Anda mungkin ingin menggunakannya
git stash
. Ini akan membuat semua perubahan terbuka Anda, memungkinkan Anda untuk mengembalikannya nanti. Gunakangit status
untuk melihat bahwa mereka tidak ada lagi. Sekarang buat komit pertama seperti yang biasa Anda lakukan. Selanjutnya Anda dapat menggunakangit stash pop
untuk mengembalikan perubahan asli Anda dan membuat komit kedua, melakukan pekerjaan utama Anda.Cara lain adalah dengan melakukan semua perubahan yang diperlukan dan kemudian membuat dua komit, keduanya berisi bagian dari pekerjaan Anda. Untuk melakukannya, Anda bisa menggunakan indeks (juga dikenal sebagai area pementasan) yang disediakan oleh git. Ini adalah area khusus yang dapat Anda gunakan untuk menyiapkan komitmen. Dengan asumsi Anda telah mengubah banyak file, Anda dapat menambahkan masing-masing ke indeks menggunakan
git add
. Ketika melakukangit commit
hanya file yang ditambahkan ke indeks yang akan dikomit.git status
akan menunjukkan kepada Anda bagian mana dari perubahan Anda yang akan dilakukan dan mana yang tidak. Misalnya akan terlihat seperti ini setelah mengubah file a.txt, b.txt dan c.txt dan setelah itu melakukangit add a.txt
:Saat Anda melakukan
git commit
dalam kondisi ini, hanya perubahan ke a.txt yang akan ditambahkan ke komit Anda.Tambahan Anda dapat meninjau perubahan yang tepat untuk dilakukan menggunakan
git diff --cached
, yang akan menunjukkan kepada Anda perbedaan dari semua perubahan yang akan dilakukan.Jika satu file berisi perubahan untuk kedua komit, Anda juga dapat menambahkan hanya sebagian saja ke indeks dengan menggunakan "git add --patch b.txt". git akan memberi Anda mode interaktif yang meminta Anda untuk setiap perubahan pada file yang diberikan jika harus ditambahkan ke indeks. Ini mungkin menjadi lebih sulit jika Anda memiliki perubahan garis di samping satu sama lain, yang perlu dibagi dalam dua komitmen, namun ada cara untuk menyelesaikannya juga.
Jika Anda ingin mempelajari lebih lanjut tentang area pementasan, Anda mungkin ingin membaca ini: http://gitready.com/beginner/2009/01/18/the-staging-area.html
Anda juga mungkin ingin membaca lebih lanjut tentang penambahan interaktif di sini: http://nuclearsquid.com/writings/git-add/
sumber
Jika Anda menggunakan GUI untuk Git, seperti SourceTree oleh Atlassian, atau
git gui
, Anda dapat melakukan sebagian file dan membiarkan bagian lain tidak dikomit. Bahkan, Anda dapat mengkomit setiap baris kode.Saya sering melakukan ini ketika saya jatuh ke lubang kelinci seperti yang Anda jelaskan. Ini adalah cara yang bagus untuk membuat komit masuk akal atau komit sebagai pendahulu komit utama.
Anda dapat melakukan ini dari baris perintah, tetapi agak canggung.
Ketika Anda bisa mengkomit di tingkat patch Git dan garis individual, Anda tidak perlu membuat cabang baru, simpanan, komit, simpanan, dan gabungkan. Teruslah bekerja dan jangan hancurkan arusnya. Anda mendapatkan hal yang baik.
sumber