Saya memiliki sejumlah perubahan yang saya komit ke repositori lokal saya, tetapi belum didorong. Karena pada fitur membutuhkan waktu lebih lama dari yang diharapkan, saya ingin menukar perubahan ini ke cabang bernama sebelum saya mendorong. Bagaimana saya bisa melakukan ini?
124
Jawaban:
Seperti yang dikemukakan oleh Mark, MqExtension adalah salah satu solusi untuk masalah Anda. IMHO alur kerja yang lebih sederhana adalah dengan menggunakan ekstensi rebase . Misalkan Anda memiliki riwayat seperti ini:
Artinya, revisi
0
adalah dasar yang Anda gunakan untuk mulai mengerjakan fitur Anda. Sekarang Anda ingin memiliki revisi1-2
pada cabang bernama, katakanlahmy-feature
. Perbarui ke revisi0
dan buat cabang itu:Sejarahnya sekarang terlihat seperti ini:
Gunakan
rebase
perintah untuk memindahkan revisi1-2
ke revisi3
:Ini menghasilkan grafik berikut:
Itu saja .. seperti yang disebutkan dalam komentar untuk jawaban Mark, memindahkan kumpulan perubahan yang sudah didorong umumnya adalah ide yang buruk, kecuali Anda bekerja dalam tim kecil di mana Anda dapat berkomunikasi dan memaksakan manipulasi riwayat Anda.
sumber
fold
perintah dari ekstensi histedit yang sekarang sudah terpasang ).hg log -G
( GraphlogExtension ). Saya telah menghapus beberapa baris secara manual, tetapi itu juga dapat dirender sepenuhnya secara otomatis menggunakan gaya log khusus .Anda dapat menggunakan MqExtension . Katakanlah perubahan yang akan dipindahkan adalah revisi 1-3:
sumber
Saya lebih suka solusi tambalan yang dijelaskan di sini oleh Mark Tolonen
Apa yang saya punya:
Apa yang saya inginkan:
perintah mercurials:
Berikut adalah status repositori lokal saya
Sekarang saya perlu menghapus revisi 1 2 dan 3 dari cabang default saya. Anda dapat melakukannya dengan perintah strip dari ekstensi mq.
hg strip
menghapus set perubahan dan semua turunannya dari repositori.Aktifkan ekstensi dengan menambahkan baris berikut ke file konfigurasi Anda (.hgrc atau Mercurial.ini):
vim ~/.hgrc
dan tambahkan :Dan sekarang hapus repositori ini pada revisi 1.
dan inilah kami
catatan: set perubahan berbeda tetapi revisinya sama
sumber
Bagi mereka yang cenderung menggunakan GUI
Tortoise Hg
->File
->Settings
lalu centangrebase
.Mulai ulang UI kura-kura
Buat cabang baru tempat Anda akan memindahkan perubahan. Klik pada nama cabang saat ini -> pilih
Open a new named branch
-> pilih nama cabang.public
(mis.draft
), Lanjutkan ke 5. (Jika perubahan telah dipublikasikan dan Anda bukan pengembang senior, Anda harus berbicara dengan seseorang yang senior (dapatkan kambing hitam) karena Anda dapat mengacaukan banyak waktu , Saya tidak bertanggung jawab :)).Pergi ke
View
->Show Console
(atau Ctrl+ L) lalu tulis di konsolhg phase -f -d 2
- di mana 2 adalah revisi terendah Anda akan pindah ke cabang baru.Pergi ke cabang dan revisi (harus menjadi revisi paling atas jika Anda memindahkan perubahan ke cabang baru yang dibuat pada langkah 3.)
Right Mouse
->Update
Pergi ke cabang dan revsion Anda akan memindahkan perubahan dari
Right Mouse
->Modify History
->Rebase
Klik
Rebase
dan berdoa tidak ada konflik, gabungkan jika perlu.Dorong perubahan, saat ini semua revisi masih harus dilakukan
draft
.Pergi ke revisi paling atas di cabang tempat Anda memindahkan perubahan ke
Right Mouse
->Change Phase to
->Public
.Semoga ini menghemat waktu Anda.
sumber
public
otomatis lagi (setidaknya bagi saya mereka tidak).