Git und Mercurial: was wäre das äquivalent von Git-workflow Mercurial?
#lets get the latest
git pull
#lets switch to branch and do some work
git checkout -b makeSomeBugs
#do the work commit
git add .
git commit -am "introducing some bugs"
#push this for my lazy remote friend to see
git push origin makeSomeBugs
#uh .. changes on master
git pull origin master
#do some work..
git commit -am "introducing some more bugs"
git push origin makeSomeBugs
#lets switch back to master
git checkout master
git pull
#work is done, lets merge
git merge --no-ff makeSomeBugs
git push origin
#and remove the branch to never ever see it again
git push origin :makeSomeBugs
git branch -d makeSomeBugs
Verschiedene blog-Quellen, aber Sie sind ziemlich alt) sagen, dass die Verzweigung, wie dies in mercurial ist no-go, vor allem mit permanent-Zweig entfernen...
- Ich habe versucht, und noch einen Weg zu finden, um zu simulieren, ein git-branch-workflow mercurial. Regelmäßige Zweig zaghaft, die nicht arbeiten, weil Sie können nicht löschen Sie Sie (nur in der Nähe von Ihnen, aber das bedeutet, dass Zweigs name auf ewig). Lesezeichen werden sollen, wie git branches aber Sie don ' T scheint wirklich zu arbeiten, wie Sie, zumindest für mich.
- wie hast Lesezeichen scheitern Sie?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hätte einige bits falsch, weil ich vielleicht falsch verstanden habe, git, aber vorausgesetzt, Sie verwenden eine aktuelle version von Mercurial, oder wenn nicht, die Lesezeichen-Erweiterung aktiviert ist...
Gibt es ein paar "mentale Modell" Unterschiede, aber ich denke, es ist ziemlich nah. Größten ist, wenn Sie löschen Sie das Lesezeichen. Löschen Sie lokal und drücken Sie dann, dass es gelöscht wird. Umgekehrter Reihenfolge aus, was hast du mit git.
Es ist auch die Frage, was Sie verwenden, zu identifizieren, die "master" - Kopf. Wenn es ein Lesezeichen bereits auf dem server (genannt
master
z.B.) der ersten Zeile werden würdehg pull -B master
die ersten merge -hg merge master
und das updatehg update -C master
. Sobald Sie gezogen haben, ein Lesezeichen zum ersten mal von einem nachfolgenden zieht oder schiebt, sollte es zu aktualisieren, ohne dass explizit erwähnt werden muss.default
bezieht sich auf die Standard - namens Zweig. Es ist nicht das gleiche wiemaster
.Es ist ziemlich das gleiche, außer, dass mit Mercurial Sie in der Regel würden sich nicht die Mühe benennen Ihre Fortschritte bei allen und nur eine anonyme Filiale.
Ich werde lassen Sie das Waschbecken in für eine moment...
Im Gegensatz zu git, Mercurial nicht 'vergessen' die änderungen, wenn es kein branch-name oder ein Lesezeichen zugeordnet, so gibt es keine Notwendigkeit für die Benennung und anschließend zu löschen. Nach dieser, es sieht aus wie ein ziemlich standard-workflow:
Optional können Sie ein Lesezeichen, wenn Sie wirklich wollen, um explizit zu verfolgen, der anonyme Kopf; beim starten (nach
hg update
), beschriften Sie die aktuellen änderungssatz mit:Und wenn Sie fertig sind (nach
hg merge
), entfernen Sie die Lesezeichen mit:Könnte man auch drücken Sie die Lesezeichen Ihres Freundes Willen, aber... meh.
default
Namen, dann Sie benötigen, um ein anderescheckout master
Recht? Was du machst, ist wieder zurück in der revision vor dem commit zu beheben Fehler X. machen Sie das gleiche mit mercurial. Wir würdenhg update <revision>
wo überarbeitung könnte ein tag sein, Lesezeichen, branch-name, oder nur eine schlichte Revisionsnummer. Was bekommt Sie zurück, wo Sie sein wollen. Ich denke, der kulturelle Sache ist, dass Mercurial wir sind sehr verwendet, um die Bewegung um die DAG. Im git, die Sie bewegen sich zwischen den "Zweigen", die Sie bewegt auf der ganzen DAG.hg update 1
zurück bis zur revision 1 und Begehen einen fix für den bug Y als Differenzmenge 3. Jetzt haben Sie zwei Filialen, und Sie können sich entscheiden, nur schieben Sie den fix für bug X mithg push -r 2
. Lesezeichen sind nur optional Etiketten, die Ihnen helfen können verfolgen, wo Sie Links Ihren änderungen.