Então, eu tenho um repositório git que clonei de uma fonte upstream no ghithub. Fiz algumas alterações nele (que não foram confirmadas e no ramo mestre). O que eu quero fazer é enviar minhas alterações para a minha página do github como uma nova ramificação e fazer com que o github ainda a veja como um fork.
Isso é possível? Eu sou bastante novo no git e no github. Minha pergunta fez algum sentido?
A maneira mais fácil em que consigo pensar (que tenho certeza de que é a maneira mais abrangente) é forçar o repositório no github. Clone-o localmente em um diretório diferente. Adicione o repositório de origem upstream. Crie uma filial nesse novo repositório bifurcado. Copie minhas alterações de código manualmente para o novo repositório local. E, em seguida, empurre-o de volta para o meu github.
É um caso de uso comum que existe uma maneira mais simples de fazer isso sem duplicar diretórios?
Acho que estou perguntando aqui, em vez de SO, já que estou no linux usando a linha de comando git e as pessoas aqui dão melhores respostas imo =]
fonte
Respostas:
Você pode fazer tudo isso no seu repositório existente (não é necessário clonar o fork em um novo repositório (local), criar sua ramificação, copiar suas confirmações / alterações, etc.).
Prepare seus commits para serem publicados.
Refine quaisquer confirmações locais existentes (por exemplo, com
git commit --amend
e / ougit 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 commit no seu mestre local e algumas alterações não confirmadas ou apenas algumas alterações não confirmadas; aliás, as alterações não confirmadas não estão “em um ramo ”, eles estão estritamente na sua árvore de trabalho).
Renomeie sua ramificação principal para dar o nome desejado para sua "nova ramificação". Isso não é estritamente necessário (você pode enviar de qualquer ramo para outro ramo), mas provavelmente reduzirá a confusão a longo prazo se o ramo local e o ramo no fork do GitHub tiverem o mesmo nome.
Bifurque o repositório GitHub upstream
(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.
No seu repositório local (aquele que foi originalmente clonado a partir do repositório GitHub upstream e que possui suas alterações no mestre ), adicione seu repositório fork como um controle remoto:
Envie sua ramificação para o repositório de bifurcações no GitHub.
Como opção, renomeie os controles remotos para que seu fork seja conhecido como "origem" e o upstream como "upstream".
Um motivo para renomear os controles remotos seria porque você deseja usar
git push
sem especificar um repositório (o padrão é "origem").fonte
-u
opção pode fazer com que sua filial localmy-feature
rastreie a mesma filial remotaorigin/my-feature
. O comando é:git push -u github my-feature
Existe uma ferramenta:
hub
Agora você pode:
fonte