[Livro - Controlando versões com Git e Github]

git-github

#1

Olá pessoal,

No início do livro, o autor ensina como fazer uma configuração básica:

$ git config – global.user.name “Fulano da Silva”

$ git config – global user.email fulanodasilva.git@gmail.com

Alterando o meu nome de usuário e meu email, é retornado um erro:

$ git config – global user.name ivanfsilva
error: key does not contain a section: global

Tentei o user.name com e sem aspas mas o erro é idêntico… Alguém passou por algo semelhante ?

Obrigado.
Ivan


#2

Olá, Ivan.

Creio que você colocou um espaço entre o -- e o global. Não deve haver nenhum espaço.

Deve ser:

--global.

Abraço,
Alexandre Aquiles.


#3

Boa tarde Alexandre, tudo bem?

Não funcionou com o “–global” sem espaços:

$ git config --global.user.name “fulano” ou

$ git config --global.user.name fulano

dá o mesmo erro: error: unknown option `global.user.name


#4

Ivan,

O --global fica sem espaços, mas o ponto não é necessário. O correto seria:

git config --global user.name "fulano"

Perceba o espaço entre o --global e o user.name.


#5

Boa tarde Alexandre,

Agora funcionou!, obrigado pela ajuda! Rapaz, meus óculos estão fracos, rs!

Como dava erro comigo, continuei a leitura do livro e cheguei na parte do

$ git mv principal.js js/principal.js

Eu achava que ia ser complicado usar a janela de comando mas estou adorando o livro.

Até estou achando melhor e mais fácil do que o git direto das IDE eclipse (foi por onde tentei iniciar). Até porque não havia encontrado nada bem explicado e achei confuso o uso na IDE.

Quem sabe depois de conhecer bem o Git através da janela de comandos eu entenda melhor o uso do Git na IDE ?

Mais uma vez, muito obrigado.

Ivan


#6

É bem por aí, Ivan.

Há coisas que são pra facilitar, mas às vezes dificultam.

Nossa decisão pela linha de comando foi, na verdade, para que possa ser usado por desenvolvedores de variadas plataformas. Se atrelássemos ao Eclipse, excluiríamos quem usa NetBeans ou IntelliJ, programadores de outras linguagens e o pessoal de Infra.

O interessante é que, sem tantas firulas, você estuda o essencial e entende os conceitos. Aí, usar uma IDE vai ser bem mais tranquilo.


#7

Boa noite,

Criei um projeto no eclipse, porém meu workspace está em um outro HD. Qual comando devo utilizar para apontar nessa pasta de um outro HD através do Git ? Já fiz várias tentativas mas o Git sempre aponta para a pasta c:\users\meu_usuario…

meu workspace está no f:\

Tentei o $ F:/Google\ Drive/workspace/Pessoal/brewer
bash: F:/Google Drive/workspace/Pessoal/brewer: Is a directory

o Git diz que é um diretório

Obrigado


#8

Ivan,

Pelo jeito, você está usando o Windows com o Git Bash…

Então, para mudar para o F:, você deve fazer:

cd /F/Google\ Drive/workspace/Pessoal/brewer

Observação: quem informou Is a directory não foi o Git mas o bash, que é uma ferramenta de linha de comando.


#9

Boa tarde Alexandre,

Estou com algumas dúvidas em determinados pontos, veja o meu passo-a-passo e veja se estou pensando corretamente. Obrigado

Imagine que criei um Projeto em Java em casa e quero atualizar no trabalho também. Caso esteja em casa, quero continuar o desenvolvimento, então vamos lá:

EM CASA:

Entrei na pasta do Projeto e dei o “$ git init”;
Criei o “.gitignore”;
Dei o “$ git add .”;
Commitei;
Criei o repositório remoto;
Adicionei o repositório remoto ao Projeto: “$ git remote add origin https://github.com/fulano/projeto.git”;
Enviei para o repositório remoto: “$ git push origin master”;

No TRABALHO:

Entrei no workspace do Eclipse;
Clonei o Projeto: “$ git clone https://github.com/fulano/projeto.git”;

Minhas dúvidas:

  1. Como a equipe é eu comigo mesmo, como seria o trabalho com o Git? Então ficaria sempre atualizando o Master?

Digamos que gerei mais arquivos aqui no trabalho e agora quero atualizar o projeto no Github:

Não usando Branches, apenas o Master, Seguiria os seguintes passos:

No TRABALHO:

$ git add;
commitar;
Enviar para o repositório remoto: “$ git push origin master”;

EM CASA:

Puxar do repositório remoto: “$ git pull origin”;

Trabalhar, criar novos arquivos, add, commitar e “$ git push”

  1. Digamos que vou utilizar Branchs:

Já que eu clonei no trabalho, criaria uma nova Branch "$ git branch “classes e enums”, por exemplo;
Ir para a Branch atual: "$ git branch classes e enums;

Depois de criar novos arquivos, add novos arquivos e commitar:
"$ git -am “adicionado classes e enums”;

  1. Minha dúvida nesse momento:

Enviar para o repositório remoto: “$ git push origin classes e enums” ou preciso dar um merge ?

Se preciso dar um merge, então o correto seria:

a) Para mesclar seria "$ git merge classes e enums -m “Mesclando com a Branch classes e enums”;
b) Enviar para o repositório remoto: “$ git push origin classes e enums”.

Obrigado


#10

Olá, Ivan.

Só uma dica sobre o fórum: o ideal é criar outros post com cada dúvida, ao invés de aproveitar o mesmo. Da próxima vez, você cria um outro post… Mas vamos lá!


Como a equipe é eu comigo mesmo, como seria o trabalho com o Git? Então ficaria sempre atualizando o Master?

O fluxo de trabalho quando você está sozinho no projeto deve ser o mais simples o possível. Por isso, acho que o ideal é usar só master.

Quando você tiver o software em produção, talvez valha a pena criar uma branch em-desenvolvimento.

Usar uma branch para cada funcionalidade pode ser complexo demais para o seu caso.


Observações

Seguinte, evite criar branches com espaço no nome. Use hífen (-) ou underscore (_).

Para ir para uma branch, o comando é: git checkout nome-da-branch


Enviar para o repositório remoto: “$ git push origin classes e enums” ou preciso dar um merge ?

Você faz o push para enviar seus novos commits para o repositório remoto.
Você faz o pull para obter esses novos commits. Na verdade, um pull já é um fetch + um merge.

Se você tiver numa branch diferente da master, você vai trabalhando isoladamente, fazendo push e pull nessa branch. Quando chegar o momento oportuno, tipo finalizar a funcionalidade, você faz o merge da branch na master.

Então, o fluxo seria o seguinte:

  1. Chegou no trabalho, faz um git pull origin classes-e-enums pra pegar o que você fez em casa.
  2. No trabalho, muda os arquivos, faz add e commit. Pra compartilhar esses novos commits com o remoto, faz git push origin classes-e-enums.
  3. Quando tiver em casa, você obtem os commits novos do trabalho com o git pull origin classes-e-enums. Isso já faz um merge em caso de necessidade.
  4. Faz mudanças, add e commit em casa.
  5. Ainda em casa, faz git push origin classes-e-enums pra compartilhar seus novos commits com o trabalho.
  6. Continua nesse ciclo de pull, add, commit e push no trabalho e em casa…
  7. Terminou a funcionalidade, seja em casa ou no trabalho, vá para a master com git checkout master
  8. Faça o merge da branch na master com git merge -m "Merge de classes e enums"
  9. Compartilhe a nova situação da master, que tem o commit de merge, com o remoto através de git push origin master
  10. Se quiser delete a branch local com git branch -D classes-e-enums e a branch remota com git push :classes-e-enums

#11

Então pessoal, estou na pagina 65 do livro, mais especificamente no capitulo 4.3 Enviando commits para o repositório remoto e estou com o seguinte problema, quando executo o comando:

$ git push servidor master

Obtenho os seguintes erros:

error: src refspec master does not match any.
error: failed to push some refs to 'file://192.168.1.1/opt/repositorios/moveis.git

como podem ver executei os comandos exatamente como proposto no livro, alguém sabe me dizer o que está errado ou onde eu estou errando?


#12

Oi Victor,

Como você acabou de criar o repositorio e não fez nenhum commit, a branch master ainda não existe, e por isso o erro ocorreu.

Adicione algum arquivo no repositorio e faça o primeiro commit, que quando você fizer o push vai funcionar normalmente.

Bons estudos!


#13

Eu pensei nisto, mas também não consigo executar os comandos do git dentro do repositório, apresenta esse erros:

Captura%20de%20tela%20de%202018-02-19%2014-50-45


#14

Oi Victor,

Esse erro aconteceu porque você criou o repositório com o parâmetro --bare
Esse parâmetro serve para criar o repositório no servidor, mas para trabalhar no repositório, adicionando arquivos e commits, você deve clonar o repositório em outro computador ou outro diretório.

Você tem duas opções então:

  1. Criar um novo repositório sem o parametro --bare
  2. Clonar esse repositório em outro diretorio para poder trabalhar com ele.

#15

Consegui! Eu tinha executado o comando:
$ git remote add servidor file://192.168.1.1/opt/repositorios/moveis.git
dentro do repositório moveis.git e não na pasta do projeto, eu meio que associei o servidor a ele mesmo e tava tentado dar o git push dentro dele que não é um work directory, executando os comandos dentro do diretório do projeto funcionou certinho, obrigado desde já!


#16

Agora eu saquei, obrigado pela a ajuda!