Git: mudanças entre as edições
(31 revisões intermediárias por 5 usuários não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
For a brief list of commands, see [[Comandos Git]]. | |||
To learn Git, see [[Literatura recomendada pela equipe#Git]]. | |||
<video allowfullscreen="true" size="full" position="right" frame="true" desc="Palestra do Linus Torvalds no Google sobre o Git http://git-scm.com" height="345" width="420" id="4XpnKHJAok8" type="youtube" /> | |||
== Git Service Providers == | |||
We recommend the following equally good services: | |||
* [http://github.com github.com] -- easier, simpler, yet powerful service focused on your git repository and not much else | |||
* [http://sourceforge.net sourceforge.net] -- complete infrastructure for your project: git, web space, mailing lists, etc. a bit more complicated than github. we use mostly sourceforge here but have recently been using Github more and more. | |||
== Git vs other distributed version control systems == | |||
=== Git vs. Mercurial === | |||
Mercurial is a popular version control system written in Python. It started nearly at the same time as Git by kernel hackers for the same purpose - to replace the proprietary Bitkeeper. In the end, the kernel developers decided for Git. Mercurial is written in Python and is used by Python itself, [[Mozilla Firefox]], etc. Most likely, Git's biggest advantage here is efficiency/speed. | |||
=== Git vs. Bazaar === | |||
Bazaar is the official version control system from Canonical and it's a GNU project. It is used by inkscape, emacs, etc. It is written in Python. | |||
The case is summarized on a phrase from the Bazaar/Canonical website, "Git is undoubtedly powerful but, in our view, it’s far more complex than a version control tool needs to be for most people." | |||
We somewhat disagree, since Git can be used at various levels of complexity. | |||
==Create Repos on Sourceforge== | ==Create Repos on Sourceforge== | ||
=== New Way === | |||
Go to the sourceforge website for your project, | |||
then click Admin -> Tools -> Git (under "click to install"). | |||
Type the name of your project (we call it NOME_REPOS). | |||
For the curious, this will create a bare repository at /home/git/p/labmacambira/NOME_REPOS | |||
Once the repository is created, you can access instructions on how to populate it by accessing | |||
https://sourceforge.net/p/labmacambira/NOME_REPOS | |||
=== Old Way === | |||
Acesse a conta do projeto por ssh: | Acesse a conta do projeto por ssh: | ||
ssh -t USER,PROJECT@shell.sourceforge.net create | ssh -t USER,PROJECT@shell.sourceforge.net create | ||
Linha 14: | Linha 40: | ||
git --git-dir=NOME_REPOS init --shared=all --bare | git --git-dir=NOME_REPOS init --shared=all --bare | ||
=== Using the newly created repository === | |||
Pronto, agora você poderá usá-lo: | Pronto, agora você poderá usá-lo: | ||
Clone-o: | Clone-o: | ||
git clone ssh://USERNAME@ | git clone ssh://USERNAME@git.code.sf.net/p/labmacambira/NOME_REPOS | ||
Depois do git add e commit usuais, o primeiro push devera ser dado explicitamente com: | |||
git push origin master | |||
Mais informações em http://sourceforge.net/apps/trac/sourceforge/wiki/Git | |||
===Se já tiver um repos git e quer migrá-lo para SF como origin=== | |||
Além das instruções acima, adentre o repositório git local ('cd NOME_REPOS') e mande | |||
git remote rm origin # caso o repo local tenha sido clonado de outro, caso contrário pule isso | git remote rm origin # caso o repo local tenha sido clonado de outro, caso contrário pule isso | ||
git remote add origin ssh://USERNAME@ | git remote add origin ssh://USERNAME@git.code.sf.net/p/labmacambira/NOME_REPOS | ||
git config branch.master.remote origin | git config branch.master.remote origin | ||
git config branch.master.merge refs/heads/master | git config branch.master.merge refs/heads/master | ||
git push origin master | git push origin master | ||
== Iniciando um Repo Git a partir de um projeto já existente == | == Iniciando um Repo Git a partir de um projeto já existente == | ||
Linha 44: | Linha 73: | ||
== Interface Git para Subversion e CVS == | == Interface Git para Subversion e CVS == | ||
Para usar Git como interface para o Subversion | [[GitSvn|Para usar Git como interface para o Subversion]] | ||
Para usar Git como interface para o CVS: https://sourceforge.net/apps/trac/vxl/wiki/ | |||
[[GitCVS|Para usar Git como interface para o CVS]] | |||
Mirrors destes links em [https://sourceforge.net/apps/trac/vxl/wiki/GitCvs] e [https://sourceforge.net/apps/trac/vxl/wiki/GitSvn] | |||
== Gerando patches pra comitadas == | == Gerando patches pra comitadas == | ||
Linha 75: | Linha 107: | ||
git remote rm origin | git remote rm origin | ||
git remote add origin ssh://USERNAME@ | git remote add origin ssh://USERNAME@git.code.sf.net/p/labmacambira/NOME_REPOS | ||
git config branch.master.remote origin | git config branch.master.remote origin | ||
git config branch.master.merge refs/heads/master | git config branch.master.merge refs/heads/master | ||
git push origin master | git push origin master | ||
== Migrar de CVS para Git == | == Migrar de CVS para Git == | ||
Linha 122: | Linha 153: | ||
== Integrando repositório Git com CIA.vc == | |||
=== Se você tiver um repositório no Git do labmacambira === | |||
Você precisará de uma conta no SourceForge (SF), se não tiver, crie uma em http://sourceforge.net. | |||
Conecte por shell no SF, usando seu usuário, no projeto labmacambira: | |||
ssh -t SEU_USUARIO,labmacambira@shell.sourceforge.net creat | |||
Quando logar, entre os comandos (digamos que seu repositório se chame FOOBAR): | |||
cd /home/scm_git/l/la/labmacambira | |||
cp aa/hooks/update FOOBAR/hooks/ | |||
cp aa/hooks/ciabot.pl path_para_seu_repos/hooks/ | |||
Edite o arquivo FOOBAR/hooks/ciabot.pl, na linha 53, e muda para o nome do seu projeto: | |||
$project = 'FOOBAR'; | |||
Feito. Agora vá em cia.vc e logue no labmacambira (solicite login/senha na listamacambira@googlegroups.com caso ainda não tiver). | |||
Vá em Projects e adicione um novo projeto, ou clique direto aqui: http://cia.vc/account/projects/add | |||
Digite um short name para o projeto e na aba Metadata, no campo Web Site URL coloque o caminho completo para seu repos (HTTP): | |||
http://labmacambira.git.sourceforge.net/git/gitweb.cgi?p=labmacambira/FOOBAR | |||
Salve e vá na guia Bots (no menu esquerdo). Na aba Basic Filtering, na opção Filter by project, haverá uma janela de texto, adicione o nome do seu repos (FOOBAR) e Salve. | |||
Pronto, dê um commit no seu clone local e veja se o bot no #labmacambira avisou. | |||
=== Se você tiver um repositório Git no GitHub === | |||
Logue na sua conta no GitHub. Procure o botão Admin e clique nele. Vá em Service Hooks. Na lista que se abrirá, clique em CIA. Selecione a opção Active e clique em Update Settings (você poderá usar o botão Test Hook para testar enviando os últimos commits, após vc ter terminado todos esses passos seguintes). | |||
Feito. Agora vá em cia.vc e logue no labmacambira (solicite login/senha para nós). | |||
Vá em Projects e adicione um novo projeto, ou clique direto aqui: http://cia.vc/account/projects/add | |||
Digite um short name para o projeto e na aba Metadata, no campo Web Site URL coloque o caminho completo para seu repos (HTTP): | |||
https://github.com/SEU_USUARIO/FOOBAR.git | |||
Salve e vá na guia Bots (no menu esquerdo). Na aba Basic Filtering, na opção Filter by project, haverá uma janela de texto, adicione o nome do seu repos (FOOBAR) e Salve. | |||
Pronto, dê um commit no seu clone local e veja se o bot no #labmacambira avisou. | |||
== Tutoriais e Informações Adicionais sobre Git == | |||
* [http://automata.cc/git Apanhado cognoscível de Git no automata.cc] | |||
* [http://akitaonrails.com/2008/04/02/micro-tutorial-de-git Tutorial Git por Akita onrails] | |||
* [http://code.google.com/p/msysgit/downloads/list?can=3 Git for Windows] | |||
* [http://pt.whygitisbetterthanx.com/ Tutorial ilustrado de Git] | |||
* [http://rogerdudler.github.com/git-guide/index.pt_BR.html Guia prático de GIT] | |||
* [http://book.git-scm.com/index.html Git Book] | |||
* [http://gitref.org Git Reference] | |||
* [http://marklodato.github.com/visual-git-guide/index-en.html Guia visual para Git] | |||
* [[GIT - Usando git com meld]] | |||
===Canal do IRC sobre Git=== | |||
#git ou #github no freenode | |||
== Ver Tambem == | == Ver Tambem == | ||
[[ | [[git - principais comandos]] | ||
[ | [http://www.silassewell.com/blog/2009/03/08/profile-management-with-git-and-github/ Controle de Perfil linux (home) usando git] | ||
[[Category:Git]] | [[Category:Lab_Macambira]] [[Category:Git]] |
Edição atual tal como às 10h40min de 11 de julho de 2016
For a brief list of commands, see Comandos Git.
To learn Git, see Literatura recomendada pela equipe#Git. <video allowfullscreen="true" size="full" position="right" frame="true" desc="Palestra do Linus Torvalds no Google sobre o Git http://git-scm.com" height="345" width="420" id="4XpnKHJAok8" type="youtube" />
Git Service Providers
We recommend the following equally good services:
- github.com -- easier, simpler, yet powerful service focused on your git repository and not much else
- sourceforge.net -- complete infrastructure for your project: git, web space, mailing lists, etc. a bit more complicated than github. we use mostly sourceforge here but have recently been using Github more and more.
Git vs other distributed version control systems
Git vs. Mercurial
Mercurial is a popular version control system written in Python. It started nearly at the same time as Git by kernel hackers for the same purpose - to replace the proprietary Bitkeeper. In the end, the kernel developers decided for Git. Mercurial is written in Python and is used by Python itself, Mozilla Firefox, etc. Most likely, Git's biggest advantage here is efficiency/speed.
Git vs. Bazaar
Bazaar is the official version control system from Canonical and it's a GNU project. It is used by inkscape, emacs, etc. It is written in Python.
The case is summarized on a phrase from the Bazaar/Canonical website, "Git is undoubtedly powerful but, in our view, it’s far more complex than a version control tool needs to be for most people."
We somewhat disagree, since Git can be used at various levels of complexity.
Create Repos on Sourceforge
New Way
Go to the sourceforge website for your project, then click Admin -> Tools -> Git (under "click to install"). Type the name of your project (we call it NOME_REPOS). For the curious, this will create a bare repository at /home/git/p/labmacambira/NOME_REPOS
Once the repository is created, you can access instructions on how to populate it by accessing
https://sourceforge.net/p/labmacambira/NOME_REPOS
Old Way
Acesse a conta do projeto por ssh:
ssh -t USER,PROJECT@shell.sourceforge.net create
Vá ao diretório do projeto:
cd /home/scm_git/l/la/labmacambira
Crie o diretório com o nome do repositório desejado:
mkdir NOME_REPOS
Crie o repositório (bare):
git --git-dir=NOME_REPOS init --shared=all --bare
Using the newly created repository
Pronto, agora você poderá usá-lo:
Clone-o:
git clone ssh://USERNAME@git.code.sf.net/p/labmacambira/NOME_REPOS
Depois do git add e commit usuais, o primeiro push devera ser dado explicitamente com:
git push origin master
Mais informações em http://sourceforge.net/apps/trac/sourceforge/wiki/Git
Se já tiver um repos git e quer migrá-lo para SF como origin
Além das instruções acima, adentre o repositório git local ('cd NOME_REPOS') e mande
git remote rm origin # caso o repo local tenha sido clonado de outro, caso contrário pule isso git remote add origin ssh://USERNAME@git.code.sf.net/p/labmacambira/NOME_REPOS git config branch.master.remote origin git config branch.master.merge refs/heads/master git push origin master
Iniciando um Repo Git a partir de um projeto já existente
Basta entrar no diretório raiz do projeto e iniciar o repo:
$ git init
Depois de limpar os arquivos temporários e auxiliares, adicione todo mundo:
$ git add .
Este comando acima já adiciona toda a árvore.
Dá um 'git status' para ver se não tem algum arquivo lixo. Se tiver, manda um:
$ git unstage <arquivo>
Para cada arquivo. Pronto! Pode commitar!
Interface Git para Subversion e CVS
Para usar Git como interface para o Subversion
Para usar Git como interface para o CVS
Mirrors destes links em [1] e [2]
Gerando patches pra comitadas
Muitos projetos nao dao acesso a commitadas diretamente, exigindo submissao de patches. Veja como fazer isso com git format-patch [3]:
Cria-se um branch a partir do master, com suas mudancas. Depois cria-se um patch desse branch referente ao master, executando o seguinte comando a partir desse novo branch:
git format-patch master --stdout > fix_bug_69.patch
Tambem e' util saber dar um squash nos seus commits pro patch ficar mais limpo depois de varias edicoes, ver [4].
Migrar de SVN para GIT
Criamos um repos temporário para baixar o SVN:
mkdir repos_tmp cd repos_tmp git svn init URL_DO_SEU_REPOSITORIO_SVN --no-metadata git svn fetch
Agora vamos limpar a sujeira deixada pelo SVN, clonando o repos temporário no repos final:
cd .. git clone repos_tmp repos_final cd repos_final
E configuramos para usar o SF:
git remote rm origin git remote add origin ssh://USERNAME@git.code.sf.net/p/labmacambira/NOME_REPOS git config branch.master.remote origin git config branch.master.merge refs/heads/master git push origin master
Migrar de CVS para Git
Exitem diversas maneiras de se converter um repositorio existente para Git. Se o repositorio principal nao sera convertido para Git, ou se o repo principal e' simples, pode-se usar o git cvs. Nesse caso, veja o link: https://sourceforge.net/apps/trac/vxl/wiki/GitCvs
Ver tambem o seguinte link, para o caso de se usar Git com Subversion: https://sourceforge.net/apps/trac/vxl/wiki/GitSvn
Agora, para migrar o repositorio CVS para Git de uma vez por todas, vou descrever um jeito que usei para converter o SIP, o qual tinha um repositorio CVS no sourceforge. Primeiramente, usei o seguinte comando de backup do sourceforge pra baixar o repo CVS:
rsync -av rsync://siptoolbox.cvs.sourceforge.net/cvsroot/siptoolbox/* .
Segui as instrucoes em Creating Multiple Repositories
da pagina https://sourceforge.net/apps/trac/sourceforge/wiki/Git
- Tenho 4 repositorios dentro do projeto siptoolbox: animal,simpletoolbox,www e siptoolbox
- Dentro do shell do sourceforge:
mkdir animal simpletoolbox www git --git-dir=www init --shared=all --bare
este ultimo comando sendo repetido para animal e simpletoolbox.
Em seguida, dei um clone em cada um, depois, para cada modulo (p.ex. www abaixo), editei cvs2git.options colocando o caminho apropriado na string logo apos run_options.set_project
cvs2git --options=../cvs2git.options cd www cat ../cvs2svn-tmp/git-{blob,dump}.dat | git fast-import git reset --hard git push origin master rm -rf ../cvs2svn-tmp
Eh isso ae, mais ou menos..
Referencias de migracao CVS para Git
Integrando repositório Git com CIA.vc
Se você tiver um repositório no Git do labmacambira
Você precisará de uma conta no SourceForge (SF), se não tiver, crie uma em http://sourceforge.net.
Conecte por shell no SF, usando seu usuário, no projeto labmacambira:
ssh -t SEU_USUARIO,labmacambira@shell.sourceforge.net creat
Quando logar, entre os comandos (digamos que seu repositório se chame FOOBAR):
cd /home/scm_git/l/la/labmacambira cp aa/hooks/update FOOBAR/hooks/ cp aa/hooks/ciabot.pl path_para_seu_repos/hooks/
Edite o arquivo FOOBAR/hooks/ciabot.pl, na linha 53, e muda para o nome do seu projeto:
$project = 'FOOBAR';
Feito. Agora vá em cia.vc e logue no labmacambira (solicite login/senha na listamacambira@googlegroups.com caso ainda não tiver).
Vá em Projects e adicione um novo projeto, ou clique direto aqui: http://cia.vc/account/projects/add
Digite um short name para o projeto e na aba Metadata, no campo Web Site URL coloque o caminho completo para seu repos (HTTP):
http://labmacambira.git.sourceforge.net/git/gitweb.cgi?p=labmacambira/FOOBAR
Salve e vá na guia Bots (no menu esquerdo). Na aba Basic Filtering, na opção Filter by project, haverá uma janela de texto, adicione o nome do seu repos (FOOBAR) e Salve.
Pronto, dê um commit no seu clone local e veja se o bot no #labmacambira avisou.
Se você tiver um repositório Git no GitHub
Logue na sua conta no GitHub. Procure o botão Admin e clique nele. Vá em Service Hooks. Na lista que se abrirá, clique em CIA. Selecione a opção Active e clique em Update Settings (você poderá usar o botão Test Hook para testar enviando os últimos commits, após vc ter terminado todos esses passos seguintes).
Feito. Agora vá em cia.vc e logue no labmacambira (solicite login/senha para nós).
Vá em Projects e adicione um novo projeto, ou clique direto aqui: http://cia.vc/account/projects/add
Digite um short name para o projeto e na aba Metadata, no campo Web Site URL coloque o caminho completo para seu repos (HTTP):
https://github.com/SEU_USUARIO/FOOBAR.git
Salve e vá na guia Bots (no menu esquerdo). Na aba Basic Filtering, na opção Filter by project, haverá uma janela de texto, adicione o nome do seu repos (FOOBAR) e Salve.
Pronto, dê um commit no seu clone local e veja se o bot no #labmacambira avisou.
Tutoriais e Informações Adicionais sobre Git
- Apanhado cognoscível de Git no automata.cc
- Tutorial Git por Akita onrails
- Git for Windows
- Tutorial ilustrado de Git
- Guia prático de GIT
- Git Book
- Git Reference
- Guia visual para Git
Canal do IRC sobre Git
- git ou #github no freenode