Я использовал Mercurial, но хотел бы сделать быструю демонстрацию Git.
Каковы эквиваленты 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?
Ответы:
Розеттский камень Git-HG неплох
Между этими двумя есть еще несколько ошибок, не упомянутых здесь. Этот список был взят из моего сообщения в блоге, когда я пошел другим путем (git -> hg).
Hg
.hgignore
, синтаксис: glob - это то же поведение, что и .gitignore git.Git
.git/config
,~/.gitconfig
используйте ГИТ-конфигурации , чтобы изменить значенияHg
.hg/hgrc
,~/.hgrc
используйтеhg 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 не предоставляет графический интерфейс для выбора ревизий, только консольнуюhg record
команду.Git
git rebase<br>
Hg hg rebase . Потомуgit rebase --interactive
что есть hg histedit или 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 . ;
Обратите внимание на точкуHg
hg add ;
Точка не требуется.Git
git checkout REVISION-KEY<br>
Hghg update CHANGESET
Чтобы заполнить пробелы, некоторые из самых полезных команд от Mercurial:
Hg
hg record
Git
git add -p; git commit
Hg hg inc [URL]
Git Нет эквивалента. Вы можете сделать только эквивалент
hg pull; hg log -r .:
Hg
hg out URL
Git Пожалуйста, добавьте, если знаете как.
Для разрешения конфликтов слияния у
hg resolve
команды в Mercurial есть несколько параметров, которые изменяют поведение:Hg
hg resolve -m FILE
(отмечает, что файл был решен путем ручного устранения проблемы конфликта)Git
git add FILE
Hg
hg resolve -u FILE
отмечает файл как неразрешенныйGit,
git reset HEAD FILE
чтобы отключить файлHg
hg resolve -l
(перечисляет файлы с разрешенными / неразрешенными конфликтами)Git
git status
- файлы, которые слились без ошибок, автоматически добавляются в индекс, те, которые не имеют конфликтовHg
hg resolve FILE
(после слияния пытается повторно слить файл)Git нет эквивалента для повторного слияния, о котором я знаю.
источник
hg record
это не очень удобно,hg crecord
(от расширения crecord ) это текстовый пользовательский интерфейс на основе curses, который чрезвычайно прост в использовании.hg resolve
- одна из причин, по которой я предпочитаю git. По умолчаниюhg resolve
уничтожает ваше красиво разрешенное вручную слияние, если вы не передадите ему никаких аргументов!Примечание: одно из самых больших различий между Git и Mercurial - это явное наличие индекса или промежуточной области .
Из Mercurial для пользователя Git :
Хитрость в том, что вам действительно нужно понимать индекс, чтобы полностью использовать Git. Как напоминает нам эта статья от мая 2006 года (и это актуально и сейчас):
«Если вы отрицаете Индекс, вы действительно отрицаете сам git».
Теперь эта статья содержит много команд, которые теперь проще использовать (так что не слишком полагайтесь на ее содержание;)), но общая идея остается:
Вы работаете над новой функцией и начинаете вносить незначительные изменения в файл.
На этом этапе ваша следующая фиксация внесет 2 незначительных изменения в текущую ветку.
Записывает только изменения, добавленные в промежуточную область (индекс) на этом этапе, но не основные изменения, видимые в настоящее время в вашем рабочем каталоге.
Следующая фиксация запишет все другие важные изменения в новую ветку newFrature_Branch.
Теперь интерактивное добавление или даже разделение коммита - это функции, доступные в Mercurial с помощью команды '
hg record
' или других расширений: вам нужно будет установитьRecordExtension
илиCrecordExtension
.Но это не часть обычного рабочего процесса Mercurial.
Git рассматривает фиксацию как серию « изменений содержимого файла » и позволяет вам добавлять эти изменения по одному.
Вы должны изучить эту функцию и ее последствия: Большинство Гит власти (например , возможность легко восстановить слияние (или разрез`ать проблему, или вернуть коммита) , в отличие от Mercurial ) происходит от этого «содержимое файла» парадигмы.
tonfa (в профиле: "Hg dev, pythonist": цифры ...) вмешался, в комментариях:
О, парень. Это снова мы.
Во-первых, я здесь не для того, чтобы один инструмент выглядел лучше другого. Я считаю Hg отличным, очень интуитивно понятным, с хорошей поддержкой (особенно в Windows, моей основной платформе, хотя я также работаю с Linux и Solaris8 или 10).
Индекс фактически является передним и центральным в том, как Линус Торвальдс работает с VCS :
Теперь комбинация индекса (которое встречается не только в Git) и парадигмы «контент - король» делает его довольно уникальным и «мерзким» :
Примечание: «содержание» здесь определяется следующим образом :
Из FAQ основными преимуществами являются:
git diff
, и подтверждая каждый маленький шаг с помощьюgit add
илиgit add -u
.git diff --base
,git diff --ours
,git diff --theirs
.git commit --amend
изменять только сообщение журнала, если индекс не был изменен за это времяХотя в целом вы правы (насчет «протестированной или скомпилированной» части), способ, которым Git позволяет вам выполнять ветвление и слияние (выбор вишни или перебазирование), позволяет вам совершать коммиты так часто, как вы хотите, во временной частной ветке (только нажатием в удаленный «резервный» репозиторий), повторяя эти «уродливые коммиты» в общедоступной ветке со всеми необходимыми тестами.
источник
Меркуриал:
Эквиваленты Git:
источник
git add -u
больше, чем-A
; -u произведет изменения для всех отслеживаемых файлов, игнорируя новые неотслеживаемые файлы.git status
эквивалентноhg status
. Я новичок в Hg, и мне не удалось получить статус hg, работающий так же, как у Git.Это примерно то же самое, без addremove:
Однако это команды, которые вы бы использовали при работе в одиночку. Вы попадаете в аккуратный материал, когда хотите объединить свои изменения с работой других людей с помощью
git pull
иgit push
, и связанных команд.источник