Úteis
Lorem Ipsum.
Lorem Ipsum.
A regra do github é que você não pode fazer um fork privado de um repositório público, então o que vamos fazer é criar um espelho de um repositório público dentro de um repositório privado, aqui tem a documentação oficial para isso.
Vamos criar um clone do repositório a ser espelhado passando a flag --bare
(No final do processo este repositório será removido da sua máquina)
git clone --bare [email protected]:<usuario-do-repositorio>/<nome-do-repositorio>.git
Criar um novo repositório privado no github com o mesmo nome do repositório a ser espelhado
.
Realizar o push do repositório espelhado para o repositório privado criado no passo anterior.
cd nome-do-repositorio.git
git push --mirror [email protected]:<seu-usuario>/<nome-do-repositorio>.git
Remover o repostório clonado no passo 1.
cd ..
rm -rf nome-do-repositorio.git
Agora você pode clonar o seu repositorio privado normalmente.
git clone [email protected]:<seu-usuario>/<nome-do-repositorio>.git
Caso queira manter o seu repositório sincronizado com o repositório original, você pode adicionar o repositório original como um remote. Certifique-se também de desabilitar o push para o repositório original.
git remote add upstream [email protected]:<usuario-do-repositorio>/<nome-do-repositorio>.git
git remote set-url --push upstream DISABLE
Para ver a lista de repositorios remotos, execute o comando git remote -v
. O resultado deve ser algo como:
origin [email protected]:<seu-usuario>/<nome-do-repositorio>.git (fetch)
origin [email protected]:<seu-usuario>/<nome-do-repositorio>.git (push)
upstream [email protected]:<usuario-do-repositorio>/<nome-do-repositorio>.git (fetch)
upstream DISABLE (push)
Quando você quiser puxar as mudanças do
upstream
você pode apenas dar um fetch no remoto e dar um rebase em cima do seu trabalho.
git fetch upstream
git rebase upstream/master
E resolver os conflitos se houverem.
É isso ai, agora você tem um fork privado do repositório original.
Por hoje é só pessoal, até a próxima.
https://gist.github.com/0xjac/85097472043b697ab57ba1b1c7530274
Imagine o seguinte cenário: Você esta desenvolvendo em um repositório que possui duas branches principais, “A” e “B”. Você está trabalhando na branch “B” e precisa fazer um hotfix na branch “A”, mas precisa que esse hotfix seja refletido também na branch “B”.
Vamos ver no passo a passo como fazer isso.
Certifique-se de estar na branch A. Realize as alterações necessárias e faça um commit normalmente.
git add .
git commit -m "hotfix xpto"
Crie um patch da correção: Use o comando `git format-patch para criar um arquivo de patch que contenha as alterações que você fez na branch A:
git format-patch HEAD~1
Isso criará um arquivo de patch com as alterações na branch atual. O HEAD~1 representa o último commit na branch A.
Copie o nome que foi gerado para esse path: Será algo parecido com isso 0001-hotfix xpto.patch
Mude para a branch B.
git checkout B
Aplique o patch na branch B: Use o comando git apply
para aplicar o patch que você criou da branch A na branch B:
git apply 0001-hotfix xpto.patch
Agora basta fazer um commit normalmente na branch B.
git add .
git commit -m "hotfix xpto"
É isso ai, simples sim. Agora as alterações que você fez na branch A estão na branch B.
Por hoje é só, até a próxima.