Désolé pour le retard de ma réponse...
Bon, d'après ce que je vois: le projet est maintenant hébergé sur Github.
Tu as donc fait un fork du projet et tu disposes donc d'un espace perso qui peut évoluer indépendamment du projet initial...
Tu faispour avoir un clone local de ton référentiel. Tu noteras les @: pour signifier un accès en lecture/écriture.
Puisque tu souhaites participer il va falloir synchroniser tes référentiels avec celui que tu as forké...
Tu références le projet forkétu peux remplacer 'upstream' par un nom à ta convenance... Tu peux vérifier avec un git remote
Tu crées ta branche locale 8.x qui suit la branche 8.x de ton espace Github
git branch --track 8.x origin/8.x
Tu peux vérifier avec un git branch -a.
Tu crées ta branche locale de dev
1 2 3
| git checkout 8.x
git branch myfeature
git checkout myfeature |
... tu fais tes modifs ET tu commites le tout sur ta branche locale.
Tu te synchronises car geotools a peut-être été mis à jour
1 2
| git fetch upstream
git fetch upstream --tags |
ici tu récupères tous les objets git du référentiel initial.
Puis, tu merges les modifs en local
1 2
| git checkout 8.x
git merge upstream/8.x |
Tu mets à jour ton espace github
1 2
| git push origin 8.x
git push origin --tags |
origin est la référence de l'origine de ton fork sur Github (et, non la référence sur le projet que tu as forké). 8.x te petmet de ne pousser que ta branche locale 8.x.
Tu mets à jour ta branche locale myfeature avec ses mêmes mises à jour
1 2
| git checkout myfeature
git rebase 8.x |
Si tu souhaites récuperer tes commits de la master... tu vas faire des
1 2
| git checkout myfeature
git cherry-pick <sha1-commit_feature1> |
sur tous commits concernés... pour les récupérer sur ta branche myfeature. Opération à faire avant de pousser ta branche !
Tu pousses ta branche sur ton référentiel Github
git push origin myfeature -f
et, tu peux soumettre ton pullrequest au projet.
Tu pourras aussi nettoyer ta master en supprimant les commits que tu as mergé sur myfeature; et, pousser ta master sur github pour avoir un référentiel propre...
Voilà en gros un workflow possible pour travailler sur Github.
a+
Philippe
N.B.: sur Github, tu as droit qu'à un seul pullrequest par branche -> d'où l'intéret de tjours travailler sur des branches persos par feature. La branche perso que tu crées pour un PR doit toujours être issue d'un noeud du projet forké (i.e. la upstream)... tu doit tjrs synchroniser ton dépot local avec le projet forké. je ne l'ai pas signalé... mais après, avoir commité tes modifs tu peux resynchroniser ton espace local/Github (i.e. fetch de + rebase).
Ensuite, comme dit plus haut ton espace Github peut évoluer indépendamment du projet initial... tu pourras créer des branches persos en mergeant tes PRs refusés ou des commits non soumis qui te sont utiles... tu peux même avoir ta branche 8.x perso qui diverge du momment que tu es capable de partir de la upstream pour soumettre des PRs: ton espace Github est un fork à par entière...
N.B. git push & git push origin agissent sur toutes les branches qui ont une correspondance stricte (i.e. même nom) sur ton repo deporté. D'où l'intéret de spécifier le branche que tu souhaites pousser (tu pourrais aussi forcer ce comportement dans ta config mais bon...)
N.B.: quand tu fais un git checkout pour changer de branche, les fichiers modifiés ne sont pas commités automatiquement. git essaye donc de merger ces fichiers dans la nouvelle branche... c'est pour celà que tu retrouves tes fichiers modifiés de branche en branche. Deux solutions s'offrent à toi:
- les commiter avec 'git add' & "git commit"
- les mettre dans un bac à sable avec git stash
Partager