Saya telah menggunakan Mercurial tetapi ingin melakukan demo singkat tentang Git.
Apa padanan Git dari:
hg init . # start a project in the current directory
hg addremove # look for any added or deleted files
hg commit -m "comment" # commit any uncomitted changes
hg status # what have i changed since the last commit?
Jawaban:
Batu rosetta Git-HG lumayan
Ada beberapa gotcha lain di antara keduanya yang tidak disebutkan di sana. Daftar ini diambil dari posting blog saya sendiri ketika saya pergi ke arah lain (git -> hg).
Hg
.hgignore
, sintaks: glob adalah perilaku yang sama seperti .gitignore git.Git
.git/config
,~/.gitconfig
, penggunaan git-config untuk memodifikasi nilai-nilaiHg
.hg/hgrc
,~/.hgrc
, penggunaanhg help -c config
Git
git commit -v<br>
Hghg diff | less; hg commit
Git
gitk<br>
Hghg view, or thg from [TortoiseHg][1]
Git
git gui<br>
Hg Mercurial tidak mengirimkan GUI untuk memilih set perubahan, hanyahg record
perintah konsol .Git
git rebase<br>
Hg hg rebase . Untukgit rebase --interactive
ada histedit hg , atau Mercurial QueuesGit
git push URL ; git remote add origin URL<br>
Hghg push URL; $EDITOR .hg/hgrc ; [paths] default = URL
Git
gitk, git log origin/master..HEAD<br>
Hghg outgoing
Git
git format-patch RANGE<br>
Hghg email -m filename -o
Git
git add . ;
Perhatikan titikHg
hg add ;
Tidak perlu titik.Git
git checkout REVISION-KEY<br>
Hghg update CHANGESET
Hanya untuk mengisi kekosongan, beberapa perintah paling berguna dari Mercurial:
Hg
hg record
Git
git add -p; git commit
Hg hg inc [URL]
Git Tidak ada padanan nyata. Anda hanya dapat melakukan yang setara
hg pull; hg log -r .:
Hg
hg out URL
Git Silakan tambahkan jika Anda tahu caranya.
Untuk menggabungkan resolusi konflik,
hg resolve
perintah di Mercurial memiliki beberapa opsi yang mengubah perilaku:Hg
hg resolve -m FILE
(menandai file sebagai telah diselesaikan dengan memperbaiki masalah konflik secara manual)Git
git add FILE
Hg
hg resolve -u FILE
menandai file sebagaiGit yang belum terselesaikan
git reset HEAD FILE
untuk menghapus fileHg
hg resolve -l
(daftar file dengan konflik yang diselesaikan / tidak terselesaikan)Git
git status
- file yang digabungkan dengan rapi ditambahkan ke indeks secara otomatis, file yang tidak memiliki konflikHg
hg resolve FILE
(setelah penggabungan, mencoba untuk menggabungkan kembali file)Git tidak ada yang setara untuk penggabungan ulang yang saya tahu.
sumber
hg record
tidak terlalu ramah pengguna,hg crecord
(dari ekstensi crecord ) adalah UI teks berbasis kutukan yang sangat mudah digunakan.hg resolve
adalah salah satu alasan saya lebih suka git. Secara defaulthg resolve
menghancurkan gabungan Anda yang diselesaikan dengan baik secara manual jika Anda tidak memberikan argumen!Catatan: salah satu perbedaan terbesar antara Git dan Mercurial adalah keberadaan indeks atau area pementasan secara eksplisit .
Dari Mercurial untuk Pengguna Git :
Triknya adalah, Anda benar-benar perlu memahami indeks untuk memanfaatkan Git sepenuhnya. Seperti yang diingatkan oleh artikel dari Mei 2006 ini (dan itu masih berlaku sampai sekarang):
“Jika Anda menolak Index, Anda benar-benar menolak git itu sendiri.”
Sekarang, artikel itu berisi banyak perintah yang sekarang lebih mudah digunakan (jadi jangan terlalu mengandalkan isinya;)), tetapi gagasan umumnya tetap:
Anda sedang mengerjakan fitur baru dan mulai membuat sedikit modifikasi pada file.
Pada titik ini, komit Anda berikutnya akan memulai 2 modifikasi kecil di cabang saat ini
Hanya mencatat perubahan yang ditambahkan ke staging area (indeks) pada saat ini, bukan perubahan besar yang saat ini terlihat di direktori kerja Anda.
Komit berikutnya akan merekam semua perubahan besar lainnya di cabang baru 'newFrature_Branch'.
Sekarang, menambahkan secara interaktif atau bahkan memisahkan komit adalah fitur yang tersedia dengan Mercurial, melalui perintah '
hg record
' atau ekstensi lain: Anda perlu menginstalRecordExtension
, atauCrecordExtension
.Tapi ini bukan bagian dari alur kerja normal Mercurial.
Git melihat komit sebagai rangkaian " perubahan konten file ", dan membiarkan Anda menambahkan perubahan itu satu per satu.
Anda harus mempelajari fitur tersebut dan konsekuensinya: Sebagian besar kekuatan Git (seperti kemampuan untuk dengan mudah mengembalikan penggabungan (atau membagi dua masalah, atau mengembalikan komit) , bertentangan dengan Mercurial ) berasal dari paradigma "konten file".
tonfa (di profil: "Hg dev, pythonist": figures ...) menimpali, di komentar:
Oh Boy. Baiklah, kita lanjut lagi.
Pertama, saya di sini bukan untuk membuat satu alat terlihat lebih baik dari yang lain. Saya menemukan Hg hebat, sangat intuitif, dengan dukungan yang baik (terutama di Windows, platform utama saya, meskipun saya bekerja di Linux dan Solaris8 atau 10 juga).
Indeks sebenarnya berada di depan dan di tengah cara kerja Linus Torvalds dengan VCS :
Sekarang kombinasi indeks (yang bukan gagasan yang hanya terlihat di Git), dan paradigma "konten adalah raja" membuatnya sangat unik dan "git-ish" :
Catatan: "konten", di sini, didefinisikan sebagai berikut :
Dari FAQ , keuntungan utamanya adalah:
git diff
, dan memvalidasi setiap langkah kecil dengangit add
ataugit add -u
.git diff --base
,git diff --ours
,git diff --theirs
.git commit --amend
untuk hanya mengubah pesan log jika indeks belum dimodifikasi untuk sementaraMeskipun Anda benar secara umum (tentang bagian "diuji atau dikompilasi"), cara Git memungkinkan Anda untuk bercabang dan menggabungkan (cherry-picking atau rebasing) memungkinkan Anda untuk melakukan sesering yang Anda inginkan di cabang pribadi sementara (hanya didorong ke repositori "cadangan" jarak jauh), saat melakukan kembali "komitmen buruk" itu di cabang publik, dengan semua pengujian yang benar sudah siap.
sumber
Lincah:
Setara Git:
sumber
git add -u
lebih dari-A
; -u akan melakukan perubahan untuk semua file yang dilacak, mengabaikan file baru yang tidak terlacak.git status
setara denganhg status
. Saya baru di Hg dan belum berhasil mendapatkan status hg bekerja seperti di Git.Ini kira-kira sama, tanpa addremove:
Namun, ini adalah perintah yang akan Anda gunakan saat bekerja sendiri. Anda masuk ke hal-hal yang rapi ketika Anda ingin menggabungkan perubahan Anda dengan pekerjaan orang lain dengan
git pull
dangit push
, dan perintah terkait.sumber