Używałem Mercurial, ale chciałbym zrobić szybkie demo Git.
Jakie są odpowiedniki w Git:
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?
Odpowiedzi:
Kamień z rosetty Git-HG nie jest zły
Istnieje kilka innych problemów między tymi dwoma, o których nie wspomniano. Ta lista została zaczerpnięta z mojego własnego posta na blogu, kiedy poszedłem w drugą stronę (git -> hg).
Hg
.hgignore
, składnia: glob zachowuje się tak samo jak plik gitignore .git.Git
.git/config
,~/.gitconfig
, Zastosowanie git konfiguracyjny do modyfikowania wartościPa
.hg/hgrc
,~/.hgrc
, Zastosowaniehg 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 nie dostarcza GUI do wybierania zestawów zmian, tylkohg record
polecenie konsoli .Git
git rebase<br>
Hg hg rebase . Bogit rebase --interactive
jest hg histedit lub 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 . ;
Zwróć uwagę na kropkęHg
hg add ;
Bez kropki.Git
git checkout REVISION-KEY<br>
Hghg update CHANGESET
Aby wypełnić puste miejsca, niektóre z najbardziej przydatnych poleceń Mercurial:
Hg
hg record
Git
git add -p; git commit
Hg hg inc [URL]
Git Brak prawdziwego odpowiednika. Możesz zrobić tylko odpowiednik
hg pull; hg log -r .:
Hg
hg out URL
Git Dodaj, jeśli wiesz jak.
Aby rozwiązać konflikt podczas scalania,
hg resolve
polecenie w Mercurial ma kilka opcji, które zmieniają zachowanie:Hg
hg resolve -m FILE
(oznacza plik jako rozwiązany przez ręczne rozwiązanie problemu z konfliktem)Git
git add FILE
Hg
hg resolve -u FILE
oznacza plik jako nierozwiązanyGit w
git reset HEAD FILE
celu usunięcia z poczekalni plikuHg
hg resolve -l
(wyświetla pliki z rozwiązanymi / nierozwiązanymi konfliktami)Git
git status
- pliki, które zostały poprawnie scalone, są automatycznie dodawane do indeksu, te, które nie mają konfliktówHg
hg resolve FILE
(po scaleniu, próbuje ponownie scalić plik)Git nie ma odpowiednika dla ponownego scalenia, o którym wiem.
źródło
hg record
nie jest zbyt przyjazny dla użytkownika,hg crecord
(z rozszerzenia crecord ) jest tekstowym interfejsem użytkownika opartym na curses, który jest niezwykle łatwy w użyciu.hg resolve
jest jednym z powodów, dla których wolę git. Domyślniehg resolve
niszczy twoje ładnie ręcznie rozwiązane scalanie, jeśli nie przekażesz mu żadnych argumentów!Uwaga: jedną z największych różnic między Git i Mercurial jest wyraźna obecność indeksu lub obszaru przejściowego .
Od Mercurial for Git User :
Rzecz w tym, że naprawdę musisz zrozumieć indeks, aby w pełni wykorzystać Git. Jak przypomina nam ówczesny artykuł z maja 2006 roku (i nadal jest prawdą):
„Jeśli zaprzeczasz Indeksowi, naprawdę zaprzeczasz samemu git”.
Ten artykuł zawiera wiele poleceń, które są teraz prostsze w użyciu (więc nie polegaj zbytnio na jego treści;)), ale ogólna idea pozostaje:
Pracujesz nad nową funkcją i zaczynasz wprowadzać drobne modyfikacje w pliku.
W tym momencie twój następny commit wprowadzi 2 pomniejsze modyfikacje w bieżącej gałęzi
Rejestruje tylko zmiany dodane do obszaru przemieszczania (indeksu) w tym momencie, a nie główne zmiany obecnie widoczne w katalogu roboczym.
Następne zatwierdzenie zapisze wszystkie inne główne zmiany w nowej gałęzi „newFrature_Branch”.
Teraz dodawanie interaktywne lub nawet dzielenie zatwierdzenia są funkcjami dostępnymi w Mercurial za pomocą
hg record
polecenia „ ” lub innych rozszerzeń: musisz zainstalowaćRecordExtension
lubCrecordExtension
.Ale to nie jest częścią normalnego przepływu pracy dla Mercurial.
Git postrzega zatwierdzenie jako serię „ zmian zawartości pliku ” i pozwala dodawać te zmiany pojedynczo.
Powinieneś przestudiować tę funkcję i jej konsekwencje: większość mocy Git (jak możliwość łatwego cofania scalania (lub dzielenia problemu na pół lub cofania zatwierdzenia) , w przeciwieństwie do Mercuriala ) pochodzi z tego paradygmatu "zawartości pliku".
tonfa (w profilu: "Hg dev, pythonist": dane ...) włączył się, w komentarzach:
O chłopie. Znowu zaczynamy.
Po pierwsze, nie jestem tu po to, aby jedno narzędzie wyglądało lepiej niż inne. Uważam, że Hg jest świetny, bardzo intuicyjny, z dobrym wsparciem (szczególnie na Windowsie, mojej głównej platformie, chociaż pracuję również na Linuksie i Solaris 8 lub 10).
Indeks znajduje się w rzeczywistości z przodu i na środku, tak jak Linus Torvalds pracuje z VCS :
Teraz połączenie indeksu (co nie jest pojęciem widzianym tylko w Git) i paradygmatu „content is king” sprawia, że jest on dość wyjątkowy i „git-ish” :
Uwaga: „zawartość” jest tutaj zdefiniowana w następujący sposób :
Z FAQ główne zalety to:
git diff
i sprawdzając każdy mały krok za pomocągit add
lubgit add -u
.git diff --base
,git diff --ours
,git diff --theirs
.git commit --amend
na zmianę komunikatu dziennika tylko wtedy, gdy indeks nie był w międzyczasie modyfikowanyChociaż ogólnie masz rację (jeśli chodzi o część „przetestowaną lub skompilowaną”), sposób, w jaki Git pozwala na rozgałęzianie i scalanie (wybieranie lub rebasing), pozwala na zatwierdzanie tak często, jak chcesz w tymczasowej gałęzi prywatnej (tylko wypychanie do zdalnego repozytorium "kopii zapasowych"), podczas ponownego wykonywania tych "brzydkich zatwierdzeń" w gałęzi publicznej, z wszystkimi właściwymi testami.
źródło
Bystry:
Odpowiedniki w Git:
źródło
git add -u
więcej niż-A
; -u przygotuje zmiany dla wszystkich śledzonych plików, ignorując nowe nieśledzone pliki.git status
jest to równoważnehg status
. Jestem nowy w Hg i nie udało mi się uzyskać statusu Hg podobnie jak w Git.Jest mniej więcej tak samo, bez addremove:
Są to jednak polecenia, których używałbyś podczas pracy w pojedynkę. Wchodzisz w fajne rzeczy, gdy chcesz scalić swoje zmiany z pracą innych osób za pomocą
git pull
igit push
oraz powiązanych poleceń.źródło