Haruskah saya menggunakan simpanan git untuk menyimpan perubahan proyek saya yang sedang berlangsung dan mendorongnya ke github untuk mengakses di komputer lain?

20

Saya sangat sering mengerjakan beberapa fitur proyek saya sehingga saya perlu istirahat sebelum itu cukup baik untuk komit. Namun, saya menggunakan dua komputer berbeda setiap hari untuk membuat kode (laptop saya dan desktop lab penelitian saya). Misalnya: Saya sedang mengerjakan fitur di rumah, lalu saya berhenti dan pergi ke lab saya.

Saya tidak ingin mencampur sinkronisasi cloud (mis. Dropbox) dengan pelacakan jarak jauh GitHub.

Saya hanya melakukan kondisi kode saya yang belum selesai (dan berantakan) sebelumnya (dan mendorongnya) hanya untuk tujuan menariknya di komputer lain untuk melanjutkan pekerjaan. Saya cukup yakin ini praktik yang buruk.

Namun, hari ini, saya menemukan git stashsedikit setelah Googling. Tampaknya sebagai solusi sempurna untuk apa yang saya butuhkan.

Namun, dokumentasi tidak mengatakan apakah itu masuk ke github setelah saya mendorong perubahan saya. Selain itu, saya ingin tahu apakah ada cara yang lebih efisien untuk mencapai mobilitas yang saya butuhkan.

Terima kasih sebelumnya!

Leandro
sumber
1
Saya memberikan suara untuk menutup pertanyaan ini sebagai di luar topik karena sudah dijawab di Stack Overflow
David Arno
5
@ DavidVrno: Saya rasa ini bukan duplikat lintas situs. Pertanyaan StackOverflow adalah tentang "Can I do X" dan yang satu ini tentang "Is X a good practice". Paling tidak akar penyebab dari pertanyaan itu berbeda.
Greg Burghardt
7
@ Davidvidno yang terakhir saya periksa, "Sudah dijawab dengan SO" bukan alasan untuk menutup pertanyaan.
RubberDuck

Jawaban:

28

Saya hanya melakukan kondisi kode saya yang belum selesai (dan berantakan) sebelumnya (dan mendorongnya) hanya untuk tujuan menariknya di komputer lain untuk melanjutkan pekerjaan. Saya cukup yakin ini praktik yang buruk.

Tidak apa-apa untuk melakukan pekerjaan yang belum selesai berantakan. Lakukan pekerjaan Anda di cabang topik. Berkomitmen awal, dan komit sering. Baca di Kapan untuk mengkomit kode? untuk beberapa pedoman tentang kapan membuat komitmen. Khusus untuk Git, komit ke cabang topik dan dorong sesering yang Anda inginkan.

Jika cabang topik ini hanya diperuntukkan bagi Anda, komit dan dorong kode yang rusak. Anda hanya harus menunda mendorong kode yang rusak ke cabang yang digunakan oleh orang lain. Jangan ragu untuk memecahkan kode Anda sendiri.

Greg Burghardt
sumber
6
Saya bahkan mengatakannya lebih kuat: tidak pernah bekerja pada cabang master, selalu menggunakan cabang topik. Komit sesuai keinginan Anda, dorong tanpa rasa takut. Saat Anda puas dengan perubahannya, gabungkan menjadi master.
9000
Saran bagus! Saya pikir kebingungan besar mungkin terjadi karena kita perlu menambahkan komentar ke komit, dan kadang-kadang itu akan menjadi sesuatu seperti "tugas dalam proses" atau sesuatu seperti itu. Dan ya, saya bekerja sendiri di cabang ini sehingga semua yang Anda katakan masuk akal!
Leandro
4
Ini juga memberi Anda opsi untuk menekan komit individu menjadi satu saat menggabungkan git
snoopy
2
@Leandro commit pesan harus bersifat atomik dan sejelas masuk akal. Misalnya, meskipun WIP Anda dapat mengatakan misalnya "Menambahkan pengontrol untuk menangani permintaan halaman - WIP". Pesan komit juga menyediakan riwayat perubahan yang dapat dilakukan yang dapat diproyeksikan. Misalnya, sepuluh komitmen "WIP" tidak akan membantu siapa pun yang mencari perubahan di sekitar penanganan pengguna.
Ben
7

Stash dimaksudkan untuk penggunaan lokal, sebagai tempat sementara untuk meletakkan barang saat Anda bermain-main dengan cabang.

Jika Anda satu-satunya yang bekerja pada cabang, tidak ada masalah dengan melakukan kode yang rusak. Apa yang saya lakukan ketika dalam situasi yang sama adalah melakukan komit yang rusak, kemudian setelah menariknya di lokasi lain, lakukan git reset HEAD~1untuk membatalkannya. Tentu saja, ini membutuhkan penggunaan --forcepada Anda pullsdan pushesketika Anda mengubah lokasi.

Atau saya hanya menunggu sampai komit pertama saya dan melakukan a git commit --amend. Atau saya hanya menghancurkan semua komit yang rusak saat saya melakukan cabang fitur. Atau saya hanya tidak khawatir tentang beberapa komitmen yang jelas-jelas rusak dalam sejarah saya, karena saya cenderung tidak pergi sampai saya berada di tempat pemberhentian yang bagus. Ada banyak pilihan.

Karl Bielefeldt
sumber
1
Saya tidak akan merekomendasikan membiasakan diri --amendsehingga diperlukan --forceuntuk dorongan, meskipun. Lebih baik komit hanya ke cabang yang dibuang.
leftaroundabout
1

stashtidak benar-benar memuaskan untuk apa pun selain membersihkan direktori kerja Anda untuk "membatalkan sambungan cabang Anda"; jika Anda tidak segera stash popmenyatakan kembali maka hal-hal akan menjadi sangat membingungkan.

Jika ada pekerjaan aktual untuk diselamatkan, bahkan jika itu tidak baik untuk entri repo permanen, itu masih harus komit. Bahkan, saya tidak pernah meninggalkan direktori kerja saya dalam keadaan yang tidak di bawah kontrol versi - saya menggunakan beberapa skrip Python yang sangat sederhana untuk menyimpan setiap perubahan sebagai komit sementara. Jika Anda ingin mencobanya, berikut ini yang harus dilakukan:

  1. Ketika Anda telah melakukan beberapa pekerjaan yang belum selesai dan akan meninggalkan tempat kerja, jalankan git-tmp-commit. Secara otomatis akan melakukan semua perubahan ke cabang baru dan unik.
  2. Dorong cabang ini ke jarak jauh.
  3. Meninggalkan.
  4. Saat Anda ingin melanjutkan, kloning cabang itu lagi dari jarak jauh. Saya melakukan ini dengan ccdskrip, yang benar-benar memeriksa semuanya dari awal ke folder sementara , secara otomatis memilih cabang terbaru ... tetapi Anda juga dapat secara manual mengambil dan checkout cabang temporary-commits/original-branch/YYYY-MM-DD...dari klon repo yang ada.
  5. Akhirnya, "batalkan komitmen" perubahan dengan git-tmp-commit -r. Ini akan membawa Anda kembali ke cabang asli (mis. master) Dan meninggalkan perubahan komit sementara di direktori kerja, sehingga Anda dapat melanjutkan di sini sampai waktunya untuk komit yang tepat (atau sementara, jika Anda harus pergi lagi).

Cara penulisan skrip saat ini, ini hanya berfungsi jika tidak ada cabang masterdi repo checkout . Jadi ragu, Anda harus git branch -d master; ini jelas tidak benar-benar ideal ...

leftaroundabout
sumber