Commençons par le dépôt Git. Nous allons créer un dossier appelé projet.git et initialisez-le pour devenir le référentiel distant :
$ projet mkdir.git$ cd projet.git/
$ git init --bare
Dépôt Git vide initialisé dans /Users/zakh_eecs/_work/LearnGIT/git_remote_repository/
projet.git/
Allez maintenant à un nouvel emplacement où vous pouvez créer un dossier propre. Créez le dossier project_source et initialisez-le pour Git :
$ mkdir project_source$ cd project_source
$ git init
Dépôt Git vide initialisé dans /Users/zakh_eecs/_work/LearnGIT/git_branching_source/
source_projet/.git/
$ touchez Lisez-moi.SMS
$ git ajouter -A
$ git commit -m "Commission initiale"
[master (root-commit) 176134f] Initial Commit
1 fichier modifié, 0 insertions(+), 0 suppressions(-)
mode de création 100644 Lisez-moi.SMS
Le project_setup est un répertoire Git avec ReadMe.fichier txt. Cependant, il n'est pas connecté à notre référentiel distant. Mettons en place le projet.git pour être le référentiel distant pour project_source. Nous pouvons y parvenir grâce à la commande suivante :
$ git remote add origin /Users/zakh_eecs/_work/LearnGIT/git_remote_repository/project.git$ git push origin master
Compter les objets : 3, terminé.
Objets d'écriture : 100 % (3/3), 213 octets | 0 octet/s, terminé.
Total 3 (delta 0), réutilisé 0 (delta 0)
Vers /Users/zakh_eecs/_work/LearnGIT/git_remote_repository/project.git
* [nouvelle branche] maître -> maître
Avec la commande git remote add origin, nous avons créé la connexion entre le projet.git et project_source. Avec la commande git push origin master, nous avons poussé notre branche master vers le référentiel distant.
Vérifions nos branches (toujours dans le dossier project_source) :
$ git branche* Maître
$ git branche -r
origine/maître
$ git branche -a
* Maître
télécommandes/origine/maître
La première commande n'affiche que la branche locale. L'option -r affiche la branche distante. Et l'option -a affiche à la fois local et distant.
Créons quelques branches dans notre répertoire de travail :
$ développement de la branche gitCorrectif de branche $ git
$ git branch expérimental
$ git branche -a
développement
expérimental
correctif
* Maître
télécommandes/origine/maître
Nous avons créé des branches appelées développement, correctif et expérimental. Ils apparaissent dans notre liste de succursales locales. Mais dans les télécommandes/origine, il n'y a que la branche master car c'est la seule qu'on a poussé. Le master star (*) signifie que nous sommes toujours dans la branche master locale. Allons dans la branche de développement, validons les modifications et transférons ces modifications vers le référentiel distant.
$ git checkout développementPassé à la branche « développement »
$ echo abc > Lisez-moi.SMS
$ git ajouter -A
$ git commit -m "Branche de développement modifiée"
[développement dd9933e] Branche de développement modifiée
1 fichier modifié, 1 insertion (+)
$ git push origin développement
Compter les objets : 3, terminé.
Objets d'écriture : 100 % (3/3), 257 octets | 0 octet/s, terminé.
Total 3 (delta 0), réutilisé 0 (delta 0)
Vers /Users/zakh_eecs/_work/LearnGIT/git_remote_repository/project.git
* [nouvelle branche] développement -> développement
Vérifions maintenant toutes les branches :
$ git branche -a* développement
expérimental
correctif
Maître
télécommandes/origine/développement
télécommandes/origine/maître
On voit qu'on est dans la branche développement local, mais il y a aussi une branche développement à distance. Lorsque nous avons poussé nos modifications avec le développement git push origin, il a créé la branche de développement dans remotes/origin.
Sortons maintenant de project_source et trouvons un nouvel endroit où nous pouvons avoir un nouveau dossier. Ici, nous allons cloner le dépôt distant avec la commande suivante :
$ git clone /Users/zakh_eecs/_work/LearnGIT/git_remote_repository/project.gitClonage dans « projet »…
Fini.
Nous avons cloné une nouvelle copie appelée projet à partir du projet.git. Entrez dans le dossier du projet et vérifiez les branches :
$ cd projet$ git branche
* Maître
Lorsque Git crée un clone initial à partir d'un référentiel distant, il n'obtient que la branche master. Si nous utilisons l'option -a, nous voyons :
$ git branche -a* Maître
télécommandes/origine/HEAD -> origine/maître
télécommandes/origine/développement
télécommandes/origine/maître
Remarquez qu'il n'y a pas de branche de développement local. De plus, nous n'avons jamais poussé les branches hotfix et expérimentales de project_source vers project.git, donc on ne les voit pas. Le référentiel distant a des branches master et development (remotes/origin/HEAD -> origin/master n'est pas une branche, il vous indique simplement où pointe le HEAD).
Intégrez la branche de développement dans notre environnement de travail :
$ git fetch --allRécupérer l'origine
$ git checkout développement
Développement de succursale configuré pour suivre le développement de succursale à distance depuis l'origine.
Passé à une nouvelle branche « développement »
Si vous utilisez une ancienne version de Git, vous devrez peut-être utiliser :
$ git checkout développement origine/développementMaintenant, si nous utilisons la commande branch, nous obtenons :
$ git branche -a* développement
Maître
télécommandes/origine/HEAD -> origine/maître
télécommandes/origine/développement
télécommandes/origine/maître
Nous pouvons apporter des modifications à la branche de développement, valider les modifications, puis les pousser à l'aide de la commande de développement git push origin.
En conclusion
Lorsque vous travaillez avec GitHub et BitBucket, vous pouvez utiliser un lien HTTPS ou SSH pour vous connecter à votre référentiel distant. Vous allez donc définir votre origine sur ces liens. Mais les principes de la branche distante sont les mêmes que ceux décrits ici.
Une étude plus approfondie:
- https://git-scm.com/docs/git-branch
- https://git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server
- https://aide.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/
- https://aide.github.com/articles/push-to-a-remote/