Github adicionando um repositório como um fork de um clone existente

19

Então eu tenho um repositório git que eu clonei de uma fonte de upstream no ghithub. Fiz algumas alterações (não confirmadas e no branch master). O que eu quero fazer é empurrar minhas alterações para a minha página github como uma nova ramificação e ter o github ainda como uma bifurcação.

Isso é possível? Eu sou relativamente novo no git e no github. A minha pergunta até faz sentido?

A maneira mais fácil que eu posso pensar (o que eu tenho certeza é a maneira mais ao redor), é para bifurcar o repo no github. Clone-o localmente em um diretório diferente. Adicione o repositório de origem upstream. Crie uma ramificação nesse novo repositório bifurcado. Copie minhas alterações de código manualmente no novo repositório local. E depois empurre de volta para o meu github.

Este é um caso de uso comum que há uma maneira mais simples de fazer isso sem duplicar diretórios?

Eu acho que estou perguntando aqui ao invés de SO já que estou no linux usando o comando line git e as pessoas aqui dão melhores respostas imo =]

    
por Falmarri 15.07.2011 / 19:49

2 respostas

16

Você pode fazer tudo a partir do seu repositório existente (não é necessário clonar o fork em um novo repositório (local), criar seu branch, copiar seus commits / changes, etc.).

  1. Prepare seus commits para serem publicados.

    Refine as confirmações locais existentes (por exemplo, com git commit --amend e / ou git rebase --interactive ).

    Confirme qualquer uma das alterações não confirmadas que você deseja publicar (não tenho certeza se você quis dizer que você tem alguns commits no seu master local e algumas alterações não confirmadas, ou apenas algumas alterações não confirmadas Incidentalmente, as alterações não confirmadas não são "em um ramo", elas estão estritamente em sua árvore de trabalho).

    Renomeie sua ramificação master para dar o nome que deseja para sua "nova ramificação". Isso não é estritamente necessário (você pode passar de qualquer ramificação para qualquer outra ramificação), mas provavelmente reduzirá a confusão a longo prazo se o seu branch local e o branch em seu fork do GitHub tiverem o mesmo nome.

    git branch -m master my-feature
    
  2. Bifurque o repositório upstream do GitHub
    (por exemplo) github.com:UpstreamOwner/repostory_name.git como
    (por exemplo) github.com:YourUser/repository_name.git .

    Isso é feito no site do GitHub (ou em um “cliente” que usa as APIs do GitHub), não há comandos locais do Git envolvidos.

  3. Em seu repositório local (aquele que foi originalmente clonado do repositório GitHub e tem suas mudanças em seu master ), adicione seu repositório fork como um controle remoto:

    git remote add -f github github.com:YourUser/repository_name.git
    
  4. Envie sua ramificação para o seu repositório de ferramentas no GitHub.

    git push github my-feature
    
  5. Opcionalmente, renomeie os controles remotos para que seu fork seja conhecido como "origin" e o upstream como "upstream".

    git remote rename origin upstream
    git remote rename github origin
    

    Um motivo para renomear os remotos seria porque você deseja usar git push sem especificar um repositório (o padrão é “origem”).

por 16.07.2011 / 04:31
0

Existe uma ferramenta: hub

hub is a command line tool that wraps git in order to extend it with extra features and commands that make working with GitHub easier

Agora você pode:

# cd to a cloned repo with uncommited changes
git checkout -b feature
git commit -am 'done with feature'
git fork
git push YOUR_USER feature
# git pull-request
    
por 30.07.2015 / 18:56