Configurando um Repositório Remoto Privado no GitHub!

Faça alterações commits e testes ocultos, com facilidade sem sair do repositório principal.

Quando você precisa trabalhar em um projeto, é importante você manter todos seus commits ocultos, para poder fazer backups sem sujar o histórico da branch que você está trabalhando, até ter finalizado tudo e testato, então você uni todos esses commits em um único commit, e solicitar o maneger com a branch principal de desenvolvimento, para seus pares realizarem os testes nescessários, e então realizarem o commit para o branch principal e futuramente ser enviado para produção.

Primeiramente, faça o clone do repositório em questão cujo você tenha permissão para trabalhar em determinada branch,ou o clone do fork, se for assim que você trabalhe.

Clonando um repositório remoto ->
git clone -b Nome_da_Branch Endereço_do_Repositório Nome_do_Diretório

Recomendo que você nomei o diretório com o nome “private_” no início e depois o nome do repositório remoto, para ficar claro e óbvio facilitando você relembrar no futuro ao bater o olho que aquele diretório tem configurando mais de um repositório remoto. Você pode colocar quaisquer outros nomes que lhe ajude não esquecer e cometer erros futuros.

Uma vez que você clonado o repositório remoto clonada com a branch especifica na qual você pretende trabalhar,apenas sertifique que você está na branch correta.

Listar branchs locais e remotas ->
git branch -a

Tendo certeza absoluta que você está na branch correta, crie um repositório remoto no github ou seja lá onde for,então adcione esse repositório remoto privado ao diretório do git.

Adicionando um novo repositório remoto->
git remote add Nome_do_Repositório Endereço_do_Repositório

Recomendo nomear o nome do repositório como private, para facilitar você relembrar futuramente, evitando confusões futuras com o repositório remoto origin, o repositório remoto original.

Uma vez que você adcionou o repositório remoto privado ao diretório com o git, envie o diretório para o repositório externo.

Atualizar o repositório remoto->
git push Nome_do_Repositório Nome_da_Branch

Perceba que você você precisa escrever o nome do repositório privado depois do push, nunca esqueça de adcionar o nome do repositório remoto privado, caso contrario,você vai está enviando tudo para o repositório remoto original, normalmente nomeado como origin, por que quando você não coloca o nome do repositório o git interpreta automaticamente que você está solicitando atualizar o repositório remoto original com os arquivos do seu diretório local.

Agora que o diretório do git está corretamente configurado com os repositórios remotos privado e original, faça as inumeras alterações desejadas, commits, e sempre fazendo backup no repositório remoto privado.

Adcionando todos arquivos do repositório ao Git ->
git add .

Commit de versionamento Git com mensagem curta ->
git commit -m “Mensagem_Cuta”

Atualizar o repositório remoto->
git push Nome_do_Repositório Nome_da_Branch

Quando você terminar tudo, e estiver pronto para enviar as alterações ao repositório original, você precisa fazer um rebase dos commits, unindo todos os commits em um único commit.

Realizar um squash interativo ->
git rebase -i HEAD~Número_de_Commits_Para_Juntar
# No editor que abrir, mude “pick” para “squash” (ou “s”) em todos os commits EXCETO o primeiro. salve e feche.

Com todos os commits unidos em um único commit, se ainda quiser manter o repositório privado e ainda desejar fazer o backup no repositório remoto privado, você vai precisar forçar um push forçado, pois quando você faz um rebase com squash interativo, acaba mudando o histórico git causando conflito, e então o repositório remoto privado não vai aceitar esse commit, por essa razão você precisa forçar o push.

Forçar uma atualização do repositório remoto->
git push –force-with-lease Nome_do_Repositório Nome_da_Branch

Agora se prepare para enviar tadas as alterações ao repositório remoto original, antes disso, caso você não seja o único a trabalhar dentro dessa branch, atualize a branch de acordo com o repositório original e check se não existem conflitos, depois atualize a brach do repositório original com a branch principal do repositório original, certifique-se novamente que não existem conflitos, tudo checado e funcionando bem, envie tudo do repositório local para o repositório remoto original.

Atualizar o repositório remoto->
git push origin Nome_da_Branch

git origin -> repositório público
git private -> repositório privado