Anda memiliki beberapa opsi:
Simpan item di rak . Ini menyimpan perubahan dan menghapusnya dari direktori kerja sehingga cabang dapat melanjutkan. Itu tidak membuat perubahan-set.
hg shelve --all --name "UnfinishedChanges"
hg unshelve --name "UnfinishedChanges"
Perbarui / Edit : Versi mercurial yang lebih baru mungkin perlu digunakan
hg shelve -n "UnfinishedChanges"
hg unshelve "UnfinishedChanges"
Anda masih bisa menggunakan --name
sebagai alternatif -n
, tapi lincah sepertinya tidak menyukainya --name
lagi. Selain itu, --all
tidak lagi dibutuhkan dan lincah sebenarnya akan ketakutan karenanya.
Patch antri item menggunakan mq
. Ini tidak terlalu berbeda dengan rak dalam beberapa hal, tetapi berperilaku berbeda. Hasil akhirnya sama, perubahan dihapus dan secara opsional dapat diterapkan kembali nanti. Saat didorong, tambalan adalah kumpulan perubahan logis, ketika muncul mereka disimpan di tempat lain dan bukan bagian dari riwayat kumpulan perubahan.
hg qnew "UnfinishedWork"
hg qrefresh
hg qpop
hg qpush "UnfinishedWork"
Komit secara lokal, perbarui ke set perubahan sebelumnya dan terus bekerja dan gunakan cabang anonim (atau banyak kepala). Jika Anda kemudian menginginkan perubahan, Anda dapat menggabungkan kepala. Jika Anda tidak menginginkan perubahan, Anda dapat menghapus set-perubahan.
hg commit -m"Commiting unfinished work in-line."
hg update -r<previous revision>
hg strip -r<revision of temporary commit>
Komit mereka ke cabang bernama. Alur kerja kemudian menjadi sama seperti opsi 3 - gabungkan atau lepaskan saat Anda siap.
hg branch "NewBranch"
hg commit -m"Commiting unfinished work to temporary named branch."
hg update <previous branch name>
Secara pribadi saya menggunakan opsi 3 atau 4 karena saya tidak keberatan menghapus set perubahan atau memeriksa sebagian kode (selama itu tidak akhirnya didorong). Ini dapat digunakan bersama dengan hal- hal Fase baru untuk menyembunyikan perubahan-set lokal Anda dari pengguna lain jika perlu.
Saya juga menggunakan rebase
perintah untuk memindahkan set-perubahan di sekitar untuk menghindari penggabungan di mana penggabungan tidak akan menambahkan apa pun ke riwayat kode. Penggabungan Saya cenderung untuk menyimpan aktivitas antar cabang penting (seperti cabang rilis), atau aktivitas dari cabang fitur yang berumur lebih lama. Ada juga histedit
perintah yang saya gunakan untuk mengompresi set perubahan di mana "obrolan" dari mereka mengurangi nilainya.
Antrian patch juga merupakan mekanisme umum untuk melakukan ini, tetapi memiliki semantik tumpukan. Anda mendorong dan memunculkan tambalan, tetapi tambalan yang berada "di bawah" tambalan lain dalam tumpukan mengharuskan tambalan di atasnya juga didorong.
Peringatan , seperti semua opsi ini, jika file memiliki lebih banyak perubahan sejak perubahan sementara yang Anda simpan / antri / bercabang, akan ada resolusi penggabungan yang diperlukan saat melepas rak / mendorong / menggabungkan.
--all
tidak dikenali. itu adalah perilaku default untuk menunda semua perubahan.Secara pribadi, saya tidak menyukai jawaban yang diposting sejauh ini:
shelve
untuk perbaikan cepat (hanya untuk memindahkan perubahan yang tidak saya lakukan ke cabang lain, jika saya menyadari bahwa saya salah). Anda berbicara tentang hari, tidak mungkin saya menunda sesuatu selama berhari-hari.mq
terlalu rumit untuk sittuation biasa seperti ituSaya pikir cara terbaik adalah dengan hanya mengkomit perubahan Anda, daripada Anda kembali ke set perubahan sebelum Anda memulai perubahan ini dan bekerja dari sana. Ada beberapa masalah kecil, izinkan saya mengilustrasikan:
Katakanlah Anda memiliki set perubahan A. Kemudian Anda memulai perubahan. Pada titik ini Anda ingin menyisihkannya untuk sementara waktu. Pertama-tama, lakukan pekerjaan Anda:
Jika mau, Anda dapat menambahkan bookmark agar lebih mudah untuk kembali lagi nanti. Saya selalu membuat bookmark ke cabang anonim saya.
Kembali ke set perubahan sebelum modifikasi ini
Dari sini, Anda bekerja dan menghasilkan set perubahan C. Sekarang Anda memiliki 2 kepala (B dan C), Anda akan diperingatkan saat mencoba mendorong. Anda hanya dapat mendorong satu cabang dengan menentukan kepala cabang itu:
Atau Anda dapat mengubah fase
new-stuff
cabang menjadi rahasia. Perubahan rahasia tidak akan didorong.sumber
mq
agak terlalu rumit untuk situasi ini saja , tetapi memiliki kegunaan yang cukup luas, termasuk yang satu ini, sehingga ada gunanya menginvestasikan waktu untuk menjadi fasih dengannya.Untuk menyimpan perubahan lokal yang tidak terikat, cara termudah bagi saya adalah menyimpannya sebagai file tambalan.
dan saat Anda perlu kembali ke keadaan sebelumnya:
sumber
/tmp
danhg id -i
itu akan berhasil juga di Windoze.hg up
tidak dibutuhkan di sana.Anda bisa mengkloning repo Anda beberapa kali. Saya cenderung memiliki klon root, kemudian beberapa anak dari sana. Contoh:
Keempat anaknya semuanya dikloning dari root dan dorong / tarik ke / dari root. Akar kemudian mendorong / menarik dari repo master di jaringan / internet di suatu tempat. Akar bertindak sebagai semacam area pementasan pribadi Anda.
Jadi dalam kasus Anda, Anda baru saja mengkloning repo baru dan mulai bekerja. Tinggalkan pekerjaan 'yang disimpan' di repo lainnya. Sesederhana itu.
Satu-satunya downside adalah penggunaan ruang disk, tetapi jika itu menjadi perhatian Anda tidak akan menggunakan DVCS sama sekali;) Oh dan itu agak mencemari daftar "proyek terbaru" Visual Studio Anda, tapi apa hei.
[Edit komentar berikut]: -
Untuk menyimpulkan ... apa yang Anda lakukan baik-baik saja dan normal. Saya berpendapat ini adalah cara terbaik untuk bekerja ketika yang berikut ini benar: 1) berumur pendek 2) Anda tidak perlu berkolaborasi dengan pengembang lain 3) perubahan tidak perlu meninggalkan PC Anda sampai komit / dorong waktu.
sumber