Comment puis-je bifurquer mon dépôt GitHub?
Question
Alors, débutant total à Git. Lu dans les guides et je pense que les principes de base, mais je suis en difficulté y parvenir un but.
J'ai une prise en pension créé pour mon code générique source de balisage. Juste des choses que je réutilise pour chaque évasion. Il est appelé markupDNA.git
Je voudrais avoir des répertoires différents dans mes sites mac dir ~/Sites/project-N
. Là où je construis sur la substance générique et faire une évasion d'un site. Je voudrais ceux-ci soient liés à ma principale git comme fourches, mais vous ne pouvez pas votre fourche repo?
Je voudrais pouvoir faire quelque chose comme ceci:
git clone <url> name
git add .
# make changes
git commit -m 'whatever'
git push
Mais je ne veux pas pousser à l'origine. Je veux pousser à une fourchette de repo markupDNA
où il a été cloné. Mais il semble que cela pousse juste mes changements jusqu'à dans le maître d'origine. L'idée est de garder le markupDNA
propre et juste beaucoup de fourches pour mes différents projets, dont chacun aura son propre répertoire clonée sur mon disque dur.
Toutes les idées?
La solution
Il sera probablement beaucoup plus facile à utiliser , plutôt que d'utiliser des fourches séparées . Vous pouvez toujours avoir séparés pour chaque checkouts branche; juste clone votre repo plusieurs fois, et l'utilisation git checkout
dans chacun pour passer à la branche appropriée (ou git checkout -b
pour créer la branche et le vérifier à la fois). Une fois que vous avez créé les branches, vous pouvez les pousser à GitHub en utilisant git push origin <branchname>
.
Autres conseils
Vous faites la bonne chose.
cd ~/Sites/
git clone ~/Dev/markupDNA/ project-N
cd project-N
git remote rename origin markupDNA
- Nav dans le dossier où vous stockez vos projets
- clone votre repo
markupDNA
de base avec le nom personnalisé - renommer la télécommande de sorte que si vous voulez une « origine » plus tard, vous pouvez
pour faire vrai fourchette GitHub du référentiel propre, vous pouvez utiliser ces étapes:
- Créer une organisation
- fourchette à l'organisation
- Renommer projet fourchue
- Déplacer à votre compte
Surpris personne n'a fait référence blog en poste de ce type .
Voici les étapes pertinentes:
$ git clone git@github.com:YOURNAME/foo.git bar
$ cd bar
$ vim .git/config
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = git@github.com:YOURNAME/bar.git #replace foo with bar
$ git remote add upstream git@github.com:YOURNAME/foo.git
$ git push -u origin master
Au lieu de modifier la config, j'utilise habituellement une combinaison de git remote remove
et git remote add
.
Vous pouvez également utiliser git remote rename
suivie git remote add
si vous voulez garder l'origine en amont autour.
Ce tutoriel donne une réponse simple et directe:
- Créer une nouvelle github vide
forkedrepo
repository -
Clone localement:
git clone https://github.com/YOURUSERNAME/forkedrepo.git
-
Ajoutez le dépôt GitHub original à distance du nouveau référentiel local:
git remote add upstream https://github.com/YOURUSERNAME/originalrepo.git
-
Déroulez une copie du dépôt github originale à votre nouveau référentiel local:
git pull upstream master
-
Appuyez sur les fichiers de votre nouveau référentiel local nouveau référentiel GitHub:
git push origin master
Ce ne sera pas reconnu par github comme une fourchette du dépôt original, bien sûr, mais cela est aussi bon qu'il obtient.
Bien sûr, vous pouvez cloner à partir d'un clone. En git il n'y a pas de concept d'une prise en pension principale. Les gens désignent souvent une prise en pension principale, mais est par convention, non pas à cause d'une raison technique.
Vous pouvez faire tout exactement comme vous décrivez et plus encore.
Par exemple, il est logique de garder une branche dans vos sites en petits groupes avec des idées pour des ajouts ou des modifications à vos trucs génériques. Vous pouvez tirer ces vers vos repo génériques et de distribuer à nouveau à partir de là.
Vous pouvez également utiliser outil d'importation de Github.
(il est fait pour l'importation de SVN, etc., mais vous pouvez l'utiliser pour cela aussi)
- Créer un nouveau référentiel dans Github. IMPORTANT : ne pas "initialize avec un README"
- Sur l'écran suivant, cliquez sur "Importer le code"
- Coller l'URL du Github vous repo à importer. ( capture d'écran )
Encore une fois, cela crée un nouveau dépôt et non une véritable fourche sur Github. Mais toutes vos branches, l'histoire, etc. seront là.