Servidor Git

Olá estou querendo montar um servidor ubuntu aonde será feito um repositório central com o git,

Gostaria de saber como faço para ter um repositório na minha maquina e
logo apos quando eu quiser fazer commit, meu projeto possa subir pro
servidor central com o repositório.

Meu projeto será feito em java com as IDE’s Netbeans ou Eclipse

Com o git já instalado, crie um diretório de sua preferência com qualquer nome:
mkdir meuapp.git (digamos que vc criou em /home/user/meuapp.git)
entre nele: cd meuapp.git
rode isso: git --bare init

Na sua máquina local, você vai no seu projeto já criado e roda:
git init
depois adiciona tudo e dá o commit:
git add . e git commit -am “primeiro commit”

então vc adiciona o branch master:

git remote add origin ssh://seuusuario@ipdoservidor/home/user/meuapp.git (vai pedir a senha)

e por ultimo da o push:

git push origin master

vc quer saber como fazer git push para um servidor “central” via IDE?

eu acredito que ambos tem plugin para trabalhar com git.

o resto vc aprende lendo a documentação ou brincando com tutoriais como este:

Minha duvida é a seguinte, cada desenvolvedor vai ter um repositório local na sua própria maquina, esse desenvolvedor vai programando conforme as suas tarefas, quando ele quiser dar commit essas alterações feitas em sua maquina no repositório local deve subir para o repositório central sendo assim quando todos os desenvolvedores for dar git pull faça o download de todas as alterações feita. como consigo realizar essas etapas? Obrigado a todos pelas respostas…

cara desenvolvedor tem que saber usar git. simples assim.

vc esta simplificando um pouco o problema.

primeiro vc precisa definir um ciclo de desenvolvimento.

por exemplo, eu trabalho com branch master e branch devel. cada feature é desenvolvida em um branch a partir de devel ( cujo nome tem o id da task no redmine via https://github.com/celogeek/git-redmine-suite ).

a cada push para o repositorio central ( gitlab ) é executada a suite de testes via gitlab-ci

terminada a tarefa cria-se um pull request para ser revisada por outro desenvolvedor. estando ok a feature é incluida (merge) em devel.

em um dado momento faz-se uma nova release, nesse caso rola um merge no master com uma tag relativa a versão.

eu gosto bastante dessa abordagem quando pessoas podem trabalhar em tasks individuais ou em dupla sem muito grilo. mais gente trabalhando no mesmo problema fica dificil.

vc não precisa seguir este modelo. existem prós e contras. outros modelos possiveis:

  • todo mundo trabalha em devel. a cada commit rola um hook que executa todos os testes e caso falhe todo mundo recebe um email dizendo “DEVEL ESTA QUEBRADO POR CONTA DO COMMIT XXX FEITO POR FULANO”. isso pode se chamar continuous development. vantagens: força a suite de testes ser eficiente, todo mundo tem que atualizar o repositorio local com frequencia.

  • todo mundo trabalha no mesmo projetão que tem todos os diretorios de todos os projetos. define-se quem pode fazer commit em devel em determinados diretorios após o review. isso é chamado monorepository. vantagens: vc faz git pull e tem TUDO que precisa. contras: eu nunca trabalhei assim e já odeio.

resumo:

  • defina o ciclo de desenvolvimento
  • cada programador tem que respeitar o ciclo
  • não sabe usar git? treinamento
  • usou errado? manda desfazer
  • desrespeitou o ciclo? demite :slight_smile:

Quando faço o git push origin master ele pede a senha digito a senha e ele retorna esse erro:

Counting objects: 3, done.
Writing objects: 100% (3/3), 223 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: error: insufficient permission for adding an object to repository database ./objects
remote: fatal: failed to write object
error: unpack failed: unpack-objects abnormal exit
To ssh://dpsystems@192.168.0.107/~/git/exemplo1.git
! [remote rejected] master -> master (unpacker error)
error: failed to push some refs to ‘ssh://dpsystems@192.168.0.107/~/git/exemplo1.git’