J'utilise Mercurial mais j'aimerais faire une démo rapide de Git.
Quels sont les équivalents Git de:
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?
Réponses:
La pierre de rosette Git-HG n'est pas mauvaise
Il y a quelques autres pièges entre les deux qui ne sont pas mentionnés ici. Cette liste a été créée à partir de mon propre article de blog lorsque je suis allé dans l'autre sens (git -> hg).
Hg
.hgignore
, syntaxe: glob est le même comportement que .gitignore de git.Git
.git/config
,~/.gitconfig
, use-git config pour modifier les valeurs deHg
.hg/hgrc
,~/.hgrc
, l' utilisationhg 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 ne fournit pas d'interface graphique pour sélectionner les ensembles de modifications, uniquement lahg record
commande de la console .Git
git rebase<br>
Hg hg rebase . Cargit rebase --interactive
il y a hg histedit ou 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 . ;
Notez le pointHg
hg add ;
Aucun point nécessaire.Git
git checkout REVISION-KEY<br>
Hghg update CHANGESET
Juste pour remplir les blancs, certaines des commandes les plus utiles de Mercurial:
Hg
hg record
Git
git add -p; git commit
Hg hg inc [URL]
Git Pas d'équivalent réel. Vous ne pouvez faire que l'équivalent de
hg pull; hg log -r .:
Hg
hg out URL
Git Veuillez ajouter si vous savez comment.
Pour la résolution des conflits de fusion, la
hg resolve
commande de Mercurial propose quelques options qui modifient le comportement:Hg
hg resolve -m FILE
(marque le fichier comme ayant été résolu en corrigeant manuellement le problème de conflit)Git
git add FILE
Hg
hg resolve -u FILE
marque le fichier comme n'ayant pas été résoluGit
git reset HEAD FILE
pour désinstaller le fichierHg
hg resolve -l
(répertorie les fichiers avec des conflits résolus / non résolus)Git
git status
- les fichiers qui ont fusionné proprement sont ajoutés automatiquement à l'index, ceux qui ne sont pas en conflitHg
hg resolve FILE
(après une fusion, tente de re-fusionner le fichier)Git pas d'équivalent pour la re-fusion que je connaisse.
la source
hg record
ne soit pas très convivial,hg crecord
(à partir de l' extension crecord ) est une interface utilisateur de texte basée sur des malédictions extrêmement facile à utiliser.hg resolve
est l'une des raisons pour lesquelles je préfère git. Par défaut,hg resolve
détruit votre fusion correctement résolue manuellement si vous ne lui passez aucun argument!Remarque: l'une des plus grandes différences entre Git et Mercurial est la présence explicite de l' index ou de la zone de préparation .
De Mercurial for Git User :
L'astuce est que vous devez vraiment comprendre l'index pour exploiter pleinement Git. Comme nous le rappelle alors cet article de mai 2006 (et c'est toujours vrai maintenant):
"Si vous refusez l'index, vous refusez vraiment git lui-même."
Maintenant, cet article contient de nombreuses commandes qui sont désormais plus simples à utiliser (ne vous fiez donc pas trop à son contenu;)), mais l'idée générale demeure:
Vous travaillez sur une nouvelle fonctionnalité et commencez à apporter des modifications mineures à un fichier.
À ce stade, votre prochain commit embarquera 2 modifications mineures dans la branche actuelle
Enregistre uniquement les modifications ajoutées à la zone de préparation (index) à ce stade, et non les modifications majeures actuellement visibles dans votre répertoire de travail.
Le prochain commit enregistrera tous les autres changements majeurs dans la nouvelle branche 'newFrature_Branch'.
Désormais, l'ajout interactif ou même le fractionnement d'un commit sont des fonctionnalités disponibles avec Mercurial, via la
hg record
commande ' ' ou d'autres extensions: vous devrez installerRecordExtension
, ou leCrecordExtension
.Mais cela ne fait pas partie du flux de travail normal de Mercurial.
Git considère un commit comme une série de " modifications de contenu de fichier " et vous permet d'ajouter ces modifications une par une.
Vous devriez étudier cette fonctionnalité et ses conséquences: la plus grande partie de la puissance de Git (comme la possibilité de facilement annuler une fusion (ou couper en deux le problème, ou annuler un commit) , contrairement à Mercurial ) vient de ce paradigme du «contenu de fichier».
tonfa (dans le profil: "Hg dev, pythonist": chiffres ...) intervient, dans les commentaires:
Oh mec. On y va encore une fois.
Premièrement, je ne suis pas ici pour rendre un outil meilleur qu'un autre. Je trouve Hg génial, très intuitif, avec un bon support (notamment sur Windows, ma plateforme principale, bien que je travaille aussi sous Linux et Solaris8 ou 10).
L'index est en fait au centre de la manière dont Linus Torvalds travaille avec un VCS :
Maintenant, la combinaison de l'index (qui n'est pas une notion vue uniquement dans Git) et du paradigme "content is king" le rend assez unique et "git-ish" :
Remarque: le "contenu", ici, est défini comme suit :
D'après la FAQ , les principaux avantages sont:
git diff
et validez chaque petite étape avecgit add
ougit add -u
.git diff --base
,git diff --ours
,git diff --theirs
.git commit --amend
de modifier uniquement le message du journal si l'index n'a pas été modifié entre-tempsBien que vous ayez raison en général (à propos de la partie "testée ou compilée"), la façon dont Git vous permet de créer des branches et de fusionner (sélection ou rebasage) vous permet de vous engager aussi souvent que vous le souhaitez dans une branche privée temporaire (poussée uniquement vers un référentiel de "sauvegarde" distant), tout en refaisant ces "commits laids" sur une branche publique, avec tous les bons tests en place.
la source
Mercuriel:
Équivalents Git:
la source
git add -u
plus de-A
; -u mettra en scène les changements pour tous les fichiers suivis, ignorant les nouveaux fichiers non suivis.git status
équivaut àhg status
. Je suis nouveau dans Hg et je n'ai pas réussi à faire fonctionner le statut de hg de la même manière que celui de Git.C'est à peu près la même chose, sans addremove:
Cependant, ce sont des commandes que vous utiliseriez lorsque vous travaillez seul. Vous entrez dans le vif du sujet lorsque vous souhaitez fusionner vos modifications avec le travail d'autres personnes avec
git pull
etgit push
, et les commandes associées.la source