Eu continuo ouvindo as pessoas dizerem que estão criando código no Git. O "garfo" do Git parece suspeito como o "clone" do Git, além de alguma disposição psicológica (sem sentido) de renunciar a futuras fusões. Não há comando de bifurcação no Git, certo?
O GitHub torna os garfos um pouco mais reais grampeando correspondência nele. Ou seja, você pressiona o botão da bifurcação e, mais tarde, ao pressionar o botão de solicitação de recebimento, o sistema é inteligente o suficiente para enviar um e-mail ao proprietário. Portanto, é um pouco de dança em torno da propriedade e das permissões do repositório.
Sim não? Alguma angústia sobre o GitHub estender o Git nessa direção? Ou algum boato de que o Git absorva a funcionalidade?
--reference
usado. Exatamente como os repositórios e exclusões públicas são manipulados não é de todo claro (mover alterna para o repositório promovido escolhido aleatoriamente - aponte todos os garfos para alguma alternativa comum que não faz parte do fork original?), Mas o uso de alternativas explica vários comportamentos observáveis.Respostas:
Fork , no contexto do GitHub, não estende o Git.
Permite apenas clonar no lado do servidor.
Quando você clona um repositório GitHub na estação de trabalho local, não pode contribuir de volta para o repositório upstream, a menos que seja explicitamente declarado como "colaborador". Isso ocorre porque o seu clone é uma instância separada desse projeto. Se você deseja contribuir com o projeto, pode usar o bifurcação para fazê-lo, da seguinte maneira:
Verifique também " Fluxo de trabalho colaborativo do GitHub ".
Se você deseja manter um link com o repositório original (também chamado de upstream), é necessário adicionar um controle remoto referente ao repositório original.
Consulte " Qual é a diferença entre origem e upstream no GitHub? "
E com o Git 2.20 (quarto trimestre de 2018) e mais, buscar do fork é mais eficiente, com ilhas delta .
fonte
"Bifurcação" é um conceito, não um comando suportado especificamente por qualquer sistema de controle de versão.
O tipo mais simples de bifurcação é sinônimo de ramificação. Toda vez que você cria uma ramificação, independentemente do seu VCS, você "bifurca". Esses garfos geralmente são muito fáceis de unir novamente.
O tipo de problema que você está falando, onde uma parte separada pega uma cópia completa do código e se afasta, necessariamente acontece fora do VCS em um sistema centralizado como o Subversion. Um VCS distribuído como o Git tem um suporte muito melhor para bifurcar toda a base de código e iniciar efetivamente um novo projeto.
O Git (não o GitHub) suporta nativamente "bifurcar" um repositório inteiro (ou seja, cloná-lo) de duas maneiras:
origin
é criado para vocêorigin
equivalentesO Git simplifica a contribuição de mudanças na origem da bifurcação, como pedir a alguém do projeto original para extrair de você ou solicitar acesso de gravação para empurrar as alterações de volta. Essa é a parte que o GitHub facilita e padroniza.
Não há angústia porque sua suposição está errada. O GitHub "estende" a funcionalidade de bifurcação do Git com uma boa interface gráfica e uma maneira padronizada de emitir solicitações pull, mas não adiciona a funcionalidade ao Git. O conceito de fork-repo-fork é incorporado diretamente ao controle de versão distribuído em um nível fundamental. Você pode abandonar o GitHub a qualquer momento e continuar a empurrar / puxar os projetos "bifurcados".
fonte
X project
na minha máquina. Se eu fizer alterações no meu local e não tiver acesso de gravação à origem, enviarei um email ao autor do projeto para solicitar uma solicitação. Ele fará um controle remoto chamado gideon, que será um URL para o meu clone local, e ele poderá puxar, certo?Sim, o garfo é um clone. Surgiu porque, você não pode enviar cópias de outras pessoas sem a permissão delas . Eles fazem uma cópia para você ( bifurcação ), onde você também terá permissão de gravação.
No futuro, se o proprietário real ou outros usuários com uma bifurcação como as suas alterações, poderão recuperá-la para seu próprio repositório. Como alternativa, você pode enviar a eles uma "solicitação de recebimento".
fonte
fork
significa que há uma cópia do seu trabalho no servidor GitHub, à qual você podepush
e para quem outras pessoas têm acesso à URL, para que possampull
. Essapull request
é apenas uma maneira padrão de obter o URL da sua cópia (no GitHub) para eles, para que eles possam facilmente inseri-lo no repositório."Fork" neste contexto significa "Faça uma cópia do código deles para que eu possa adicionar minhas próprias modificações". Não há muito mais a dizer. Todo clone é essencialmente um garfo, e cabe ao original decidir se deve retirar as alterações do garfo.
fonte
on the GitHub server
para que eu possa adicionar minhas próprias modificaçõesand others can have URL access to my version
". A maioria das estações de trabalho locais não oferece acesso à URL para que ninguém possa receber. Mas se você enviar para o seu fork no servidor, eles poderão ter o URL para o pull.A clonagem envolve fazer uma cópia do repositório git em uma máquina local, enquanto a bifurcação está clonando o repositório em outro repositório. A clonagem é apenas para uso pessoal (embora futuras fusões possam ocorrer), mas com a bifurcação você está copiando e abrindo um novo caminho possível do projeto
fonte
A bifurcação é feita quando você decide contribuir para algum projeto. Você faria uma cópia de todo o projeto, juntamente com seus registros de histórico. Essa cópia é feita inteiramente em seu repositório e, depois que você faz essas alterações, emite uma solicitação de recebimento. Agora cabe ao proprietário da fonte aceitar sua solicitação de recebimento e incorporar as alterações no código original.
Git clone é um comando real que permite aos usuários obter uma cópia da fonte. git clone [URL] Isso deve criar uma cópia de [URL] em seu próprio repositório local.
fonte
Acho que fork é uma cópia de outro repositório, mas com a modificação da sua conta. por exemplo, se você clonar diretamente outro repositório localmente, a origem do objeto remoto ainda estará usando a conta da qual você clonou. Você não pode confirmar e contribuir com seu código. É apenas uma cópia pura dos códigos. Caso contrário, se você bifurcar um repositório, ele clonará o repositório com a atualização da configuração da sua conta na sua conta do github. E, em seguida, ao clonar o repositório no contexto da sua conta, você pode confirmar seus códigos.
fonte
Há um mal-entendido aqui com relação ao que é um "garfo". Um fork é na verdade nada mais que um conjunto de ramificações por usuário. Quando você empurra para um fork, na verdade empurra para o repositório original, porque esse é o ÚNICO repositório.
Você pode tentar isso pressionando uma bifurcação, observando a confirmação e, em seguida, acessando o repositório original e usando o ID da confirmação, verá que a confirmação está "dentro" do repositório original.
Isso faz muito sentido, mas está longe de ser óbvio (só descobri isso acidentalmente recentemente).
Quando John bifurca o SuperProject no repositório, o que parece realmente acontecer é que todas as ramificações no repositório de origem são replicadas com um nome como "John.master", "John.new_gui_project" etc.
O GitHub "oculta" o "John". de nós e nos dá a ilusão de que temos nossa própria "cópia" do repositório no GitHub, mas não temos nem é necessário.
Portanto, o ramo "master" do meu fork é chamado "Korporal.master", mas a interface do usuário do GitHub nunca revela isso, mostrando apenas "mestre".
Isso é basicamente o que eu acho que acontece de qualquer maneira, com base nas coisas que venho fazendo recentemente e quando você pensa sobre isso, é um design muito bom.
Por esse motivo, acho que seria muito fácil para a Microsoft implementar os garfos Git em sua oferta do Visual Studio Team Services.
fonte
git clone
um repositório totalmente novo (mesmo um "vazio") toda vez que alguém apertar o botão "fork" - isso seria um incrível desperdício de armazenamento e, provavelmente, um vetor de ataque .Além do fato de que a clonagem é do servidor para a sua máquina e o bifurcação está fazendo uma cópia no próprio servidor, uma diferença importante é que, quando clonamos, obtemos todas as ramificações, rótulos etc.
Mas quando bifurcamos, na verdade só obtemos os arquivos atuais no ramo mestre, nada além disso. Isso significa que não temos os outros ramos, etc.
Portanto, se você precisar mesclar algo de volta ao repositório original, é uma mesclagem entre repositórios e definitivamente precisará de privilégios mais altos.
Fork não é um comando no Git; é apenas um conceito que o GitHub implementa. Lembre-se de que o Git foi projetado para funcionar em ambiente ponto a ponto sem a necessidade de sincronizar coisas com qualquer cópia mestre. O servidor é apenas outro par, mas o vemos como uma cópia principal.
fonte
git branch -a
.Em termos mais simples,
Quando você diz que são bifurcação um repositório, você está basicamente criando uma cópia do repositório original sob seu GitHub ID em sua conta GitHub.
e
Quando você diz que está clonando um repositório, está criando uma cópia local do repositório original no seu sistema (PC / laptop) diretamente sem ter uma cópia na sua conta do GitHub.
fonte