Estou usando o Mercurial, mas gostaria de fazer uma demonstração rápida do Git.
Quais são os equivalentes 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?
Respostas:
A pedra de roseta Git-HG não é ruim
Existem algumas outras pegadinhas entre os dois não mencionadas aqui. Esta lista foi extraída do meu próprio post de blog quando fui para o outro lado (git -> hg).
Hg
.hgignore
, sintaxe: glob é o mesmo comportamento do .gitignore do git.Git
.git/config
,~/.gitconfig
, uso git-config para modificar os valoresHg
.hg/hgrc
,~/.hgrc
, usohg 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 não envia GUI para selecionar changesets, apenashg record
comando de console .Git
git rebase<br>
Hg hg rebase . Poisgit rebase --interactive
há 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 . ;
Observe o pontoHg
hg add ;
Nenhum ponto necessário.Git
git checkout REVISION-KEY<br>
Hghg update CHANGESET
Só para preencher os espaços em branco, alguns dos comandos mais úteis do Mercurial:
Hg
hg record
Git
git add -p; git commit
Hg hg inc [URL]
Git Sem equivalente real. Você só pode fazer o equivalente a
hg pull; hg log -r .:
Hg
hg out URL
Git Por favor, adicione se você souber como.
Para resolução de conflitos de mesclagem, o
hg resolve
comando no Mercurial tem algumas opções que mudam o comportamento:Hg
hg resolve -m FILE
(marca o arquivo como resolvido corrigindo manualmente o problema de conflito)Git
git add FILE
Hg
hg resolve -u FILE
marca o arquivo como não resolvidoGit
git reset HEAD FILE
para descompactar o arquivoHg
hg resolve -l
(lista os arquivos com conflitos resolvidos / não resolvidos)Git
git status
- arquivos que foram mesclados de forma limpa são adicionados ao índice automaticamente, aqueles que não têm conflitosHg
hg resolve FILE
(após uma mesclagem, tenta mesclar novamente o arquivo)Git nenhum equivalente para mesclar novamente que eu saiba.
fonte
hg record
não seja muito amigável,hg crecord
(da extensão crecord ) é uma IU de texto baseada em curses extremamente fácil de usar.hg resolve
é um dos motivos pelos quais prefiro o git. Por padrão,hg resolve
destrói sua mesclagem bem resolvida manualmente se você não passar nenhum argumento!Nota: uma das maiores diferenças entre Git e Mercurial é a presença explícita do índice ou área de teste .
Do Mercurial para o usuário Git :
O truque é que você realmente precisa entender o índice para explorar totalmente o Git. Como este artigo de maio de 2006 nos lembra então (e ainda é verdade agora):
“Se você nega o Index, você realmente nega o próprio git.”
Agora, esse artigo contém muitos comandos que agora são mais simples de usar (então não confie muito em seu conteúdo;)), mas a ideia geral permanece:
Você está trabalhando em um novo recurso e começa a fazer pequenas modificações em um arquivo.
Neste ponto, seu próximo commit irá embarcar 2 pequenas modificações no branch atual
Registra apenas as alterações adicionadas à área de teste (índice) neste ponto, não as principais alterações atualmente visíveis em seu diretório de trabalho.
O próximo commit irá registrar todas as outras mudanças principais no novo branch 'newFrature_Branch'.
Agora, adicionar interativamente ou mesmo dividir um commit são recursos disponíveis no Mercurial, por meio do
hg record
comando ' ' ou outras extensões: você precisará instalarRecordExtension
, ou oCrecordExtension
.Mas isso não faz parte do fluxo de trabalho normal do Mercurial.
O Git vê um commit como uma série de " alterações no conteúdo do arquivo " e permite adicionar essas alterações uma de cada vez.
Você deve estudar esse recurso e suas consequências: A maior parte do poder do Git (como a capacidade de reverter facilmente uma fusão (ou dividir o problema ao meio, ou reverter um commit) , ao contrário do Mercurial ) vem desse paradigma de "conteúdo de arquivo".
tonfa (no perfil: "Hg dev, pythonist": figuras ...) entrou na conversa, nos comentários:
Oh garoto. Aqui vamos nós novamente.
Em primeiro lugar, não estou aqui para fazer uma ferramenta parecer melhor do que outra. Acho o Hg ótimo, muito intuitivo, com um bom suporte (principalmente no Windows, minha plataforma principal, embora trabalhe no Linux e no Solaris8 ou 10 também).
O índice está realmente na frente e no centro da maneira como Linus Torvalds trabalha com um VCS :
Agora, a combinação do índice (que não é uma noção vista apenas no Git) e o paradigma "o conteúdo é rei" o torna bastante único e "git-ish" :
Nota: o "conteúdo", aqui, é definido da seguinte forma :
Desde o FAQ , as principais vantagens são:
git diff
e validando cada pequeno passo comgit add
ougit add -u
.git diff --base
,git diff --ours
,git diff --theirs
.git commit --amend
alterar apenas a mensagem de registo se o índice não tiver sido modificado entretantoEmbora você esteja certo em geral (sobre a parte "testada ou compilada"), a maneira como o Git permite ramificar e mesclar (seleção seletiva ou rebase) permite que você comprometa quantas vezes quiser em um branch privado temporário (empurrado apenas para o repositório de "backup" remoto), enquanto refaz aqueles "commits feios" em um branch público, com todos os testes corretos no local.
fonte
Mercurial:
Equivalentes Git:
fonte
git add -u
mais do que-A
; -u irá preparar mudanças para todos os arquivos rastreados, ignorando novos arquivos não rastreados.git status
é equivalente ahg status
. Eu sou novo no Hg e não consegui fazer com que o status do hg funcione de forma semelhante ao do Git.É quase o mesmo, sem addremove:
No entanto, esses são comandos que você usaria ao trabalhar sozinho. Você entra no limpo material quando você deseja mesclar as alterações com o trabalho de outras pessoas com
git pull
egit push
, e comandos relacionados.fonte