Saya baru mengenal Mercurial. Tidak dapat menemukan perintah yang benar. Mencoba update / checkout tidak berhasil. Saya menggunakan repositori lokal. Terima kasih
Saya baru mengenal Mercurial. Tidak dapat menemukan perintah yang benar. Mencoba update / checkout tidak berhasil. Saya menggunakan repositori lokal. Terima kasih
Jawaban:
Saya pikir Anda mau hg revert -r<rev> <file>
(ini akan mengubah file itu menjadi seperti pada revisi yang diberikan).
Seperti yang dikatakan djc, revert
mengubah file di tempat agar cocok dengan revisi sebelumnya. Jika Anda ingin tidak ada, Anda dapat menggunakan hg cat -r revisionid filename
(mengganti revisionid dan nama file tentunya) yang akan menampilkan file ke stdout, cocok untuk mengarahkan ke mana pun Anda mau.
hg revert
memang memecahkan masalah ini. Tetapi saya pikir Anda bingung tentang hal-hal yang lebih luas daripada sekadar jawaban atas pertanyaan Anda dan ingin mencoba menjawab dengan lebih lengkap.
hg update
adalah seluruh perintah repositori dan tidak akan berfungsi pada file individual. Ini tidak seperti subversi svn update
dengan cara ini. Jika Anda melakukannya, hg --help update
Anda dapat melihat bahwa hal ini terjadi karena perintah tidak memerlukan argumen file. Ini dapat digunakan untuk memindahkan seluruh repositori Anda ke snapshot tertentu, tetapi tidak dapat digunakan untuk melakukannya hanya ke satu file.
Jika Anda mengetik, hg --help
Anda akan melihat daftar perintah. Ini adalah daftar yang agak besar dan agak menakutkan, tetapi jika Anda membacanya, Anda akan menemukan baris ini:
revert restore individual files or directories to an earlier state
Sekarang, jika Anda hanya menginginkan status terakhir untuk tujuan perbandingan, ada perintah lain yang mungkin Anda minati, dan itu hg cat
. Itu akan memungkinkan Anda untuk mencetak konten file pada revisi tertentu. Anda kemudian dapat mengarahkan outputnya ke beberapa file lain. Kemudian Anda dapat memiliki versi baik yang diketahui sebelumnya dari file Anda dan versi lama untuk dibandingkan secara berdampingan.
Alasan mengapa Mercurial memiliki update
perintah terpisah adalah dimungkinkan untuk melakukan sesuatu di Mercurial yang tidak mungkin dilakukan di Subversion. Anda bisa update
ke versi sebelumnya, membuat perubahan, lalu melakukan. Ini akan membuat cabang. The update
perintah memiliki efek juga berubah revisi induk dari direktori kerja saat ini serta mengubah isi dari semua file dalam direktori untuk versi yang orang tua revisi ini.
Itu berarti revert
mengubah konten file (atau bahkan seluruh repositori jika Anda memberikan perintah argumen yang benar) tetapi membiarkan revisi induk dari copy pekerjaan saat ini tetap sama.
Anda dapat mengetahui revisi induk (atau revisi dalam kasus penggabungan) dari copy pekerjaan saat ini dengan menggunakan hg parents
perintah.
Dalam revisi Subversion adalah perkembangan yang sangat linier. Mercurial menciptakan cabang dengan mudah, dan mereka hampir mudah untuk digabungkan. Revisi membentuk DAG, bukan progresi linier ketat.
Untuk mengekstrak revisi tertentu dari file tertentu, Anda dapat melakukan ini di Windows:
hg cat "<FileToBeExtractedPath>" -r 9 > "<ExtractionPath>"
Di sini, 9 adalah nomor revisi.
Atau bahkan lebih baik:
hg cat "<FileToBeExtractedPath>" -r 9 -o "<ExtractionPath>"
Datang ke sini mencoba mendapatkan versi sebelumnya, jadi inilah perintah yang tepat:
hg revert -r .~1 <file>