Affichage des articles dont le libellé est Git. Afficher tous les articles
Affichage des articles dont le libellé est Git. Afficher tous les articles

jeudi 29 mars 2018

Git tuto rapide no bullshit

Vous cherchez un tuto complet et ultra-rapide pour réaliser la gestion des configurations de vos codes sources avec Git ? C'est ici.
Git Tuto rapide

Créer un nouveau dépôt Git

Pour créez un nouveau dossier, ouvrez le (placez vous dans le dossier à "giter") et exécutez la commande :

>git init

vous créez ainsi un nouveau dépôt.

Cloner un dépôt Git

Créez une copie de votre dépôt local en exécutant la commande :

>git clone /path/to/repository

Si vous utilisez un serveur distant, cette commande sera :

>git clone username@host:/path/to/repository

Les 3 Arbres

Votre dépôt local est composé de trois "arbres" gérés par git.
Le premier est votre espace de travail qui contient réellement vos fichiers.
Le second est un Index qui joue un rôle d'espace de transit pour vos fichiers et enfin HEAD
qui pointe vers la dernière validation que vous ayez faite.

Ajouter & valider

Vous pouvez proposer un changement (l'ajouter à l'Index) en exécutant les commandes :

>git add <filename>
>git add *


C'est la première étape dans un workflow git basique.
Pour valider ces changements, utilisez :

>git commit -m "Votre message de validation explicite"

Le fichier est donc ajouté au HEAD, mais pas encore dans votre dépôt distant.

Envoyer des changements

Vos changements sont maintenant dans le HEAD de la copie de votre dépôt local. Pour les envoyer à votre dépôt distant, exécutez la commande :

>git push origin master


Remplacez master par la branche dans laquelle vous souhaitez envoyer vos changements par exemple developement.

Si vous n'avez pas cloné votre dépôt existant et voulez le connecter à votre dépôt sur un serveur distant, vous devez l'ajouter avec :

>git remote add origin <server>

Maintenant, vous pouvez envoyer vos changements vers le serveur distant sélectionné

Branches

Les branches sont utilisées pour développer des fonctionnalités isolées des autres. La branche master est la branche par défaut quand vous créez un dépôt. Utilisez les autres branches pour le développement et fusionnez ensuite à la branche principale quand vous avez fini.

Créer une nouvelle branche nommée "feature_x" et changer la branche pour passer dessus utilisez :

>git checkout -b feature_x

Retourner sur la branche principale :

>git checkout master

et supprimer alors la branche secondaire :

>git branch -d feature_x

Une branche n'est pas disponible pour les autres tant que vous ne l'aurez pas envoyée vers votre dépôt distant :

>git push origin <branch>

Mettre à jour & fusionner

Pour savoir sur quelle branche vous êtes et dans quel état elle est :

>git status

Pour mettre à jour votre dépôt local vers les dernières validations, exécutez la commande :

>git pull

Pour vous positionner sur la branche master :

>git checkout master

Dans votre espace de travail pour récupérer et fusionner les changements distants.
Pour fusionner une autre branche avec la branche active (par exemple master), utilisez :

>git merge <branch>

Dans les deux cas, git tente d'auto-fusionner les changements. Malheureusement, ça n'est pas toujours possible et il en résulte des conflits. Vous devez alors régler ces conflits manuellement en éditant les fichiers indiqués par git. Après l'avoir fait, vous devez les marquer comme fusionnés avec la commande :

>git add <filename>

Après avoir fusionné les changements, vous pouvez en avoir un aperçu en utilisant :

>git diff <source_branch> <target_branch>

Tags

Il est nettement recommandé de créer des tags pour les releases de programmes. C'est un concept connu, qui existe aussi dans SVN et c'est tout simple. Vous pouvez créer un tag nommé 1.0.0 en exécutant la commande :

>git tag 1.0.0 1b3a1d62ff

Le 1b3a1d62ff désigne les 10 premiers caractères de l'identifiant du changement que vous voulez référencer avec ce tag. Vous pouvez obtenir cet identifiant avec :

>git log

Vous pouvez utiliser moins de caractères pour cet identifiant, il doit juste rester unique.

Remplacer les changements locaux

Dans le cas où, vous auriez fait quelque chose de travers (ce qui bien entendu n'arrive jamais ;) Vous pouvez annuler les changements locaux en utilisant cette commande :

>git checkout --<filename>

Cela remplacera les changements dans votre arbre de travail avec le dernier contenu du HEAD. Les changements déjà ajoutés à l'index, aussi bien les nouveaux fichiers, seront gardés.

Si à la place, vous voulez supprimer tous les changements et les validations locales, récupérer le dernier historique depuis le serveur et pointer la branche principale locale dessus, procédez comme ceci :

>git fetch origin
>git reset --hard origin/master

Voilà, ce tuto est déjà terminé !

Merci à la page du site Ici mais je me serais bien passer de la mise en page disons trop ... heu comment dire ... ball shit justement ! 

Have fun!

Références :
https://blog.imirhil.fr/2013/04/14/git-gestion-de-conf-aujourdhui.html
Plus qu'un article sur les Gestionnaires de conf CSV, SVN et les autres une vraie bonne critique de ce qui se fait en matière de gestion de configuration.

http://nvie.com/posts/a-successful-git-branching-model/
Gestion des branches un diagramme de toute beauté

http://rogerdudler.github.io/git-guide/index.fr.html
Cette page est vraiment pas ... cool mais bon c'est bien fait


samedi 3 mars 2018

TortoiseGit et Tuto Git ce que manquait pour bien démarrer

Vous ne vous en sortez pas avec uniquement Git en ligne de commande et même avec Git UI c'est pas encore ça. En installant TortoiseGit on espère bien que tout va s'arranger. Voilà ce qu'il manquait.

TortoiseGit

Création d'un repo Git en local sur mon Disque Dur

Grâce à Git, je peux créer un "repo Git" où je veux, il me suffit de cliquer droit sur n'importe quel répertoire :


Bon ya encore une popup de daub(bip) à cliquer ...


Pffff c'est lourd c'est trucs linuxiens à la con(bip)
Ce qui est cool avec git c'est qu'en supprimant le répertoire ".git" on est déconnecté du gestionnaire de codes sources. On peut faire un peu la même chose avec TFS mais c'est légèrement plus compliqué, il faut aller dans le fichier .csproj supprimer des lignes c'est délicat.

Et voilà ce qu'il me maquait la liaison avec Github, jusque là on pouvait penser que c'était de la magie.

Création d'un repositorie distant dans mon Github

Dans mon Github, j'ai créer également un nouveau repositorie :



Liaison le Repositorie Git Local et le Repositorie Git Distant

Je retourne sur le repositorie locale et je fais Bouton droit -> TortoiseGit -> Settings


Bouton droit->TortoiseGit->Settings
Dans TortoiseGit Settings -> Git -> Remote



On progresse, on progresse



Il suffit d'entrer l'URL du repositorie Github distant, en cliquant sur OK un boite de dial :


Allons y Fetchons ... encore un boite de dial ...



Encore un petit OK ca devrait arriver ...



Voilà : git.exe fetch -v --porgress "RFID-CloverWiever" : Succcess

Cette fois on dirait bien cela y est !

Regardons les logs par curiosité :



Cette fois on y est ...

Voilà donc comment lié un repositorie locale et un repositorie distant dans Github grâce à TortoiseGit.

Have fun!

jeudi 19 mai 2016

Tuto Git - Commiter calmement

Vous l'aurez compris Git est loin d'être intuitif pour ceux qui auraient l'habitude d'un autre outil de gestion de configuration c'est un peu... la panique. Pourtant on est toujours dans une logique Checkout / Commit.

Mais nous allons nous en sortir, la meilleure page de doc est la suivante à lire rapidement est :

Git.scm - 2.2 Les bases de Git - Enregistrer des modifications dans le dépôt

Notez le diagramme des états du fichier en gestion de configuration avec Git :

Git - Etats du fichier en gestion de configuration

Création de la "localisation" dans les fichiers ressources du projet

Je vais m'intéresser à la création de la "localisation" de mon application. Je souhaite que mon application parle plusieurs langues. Je vais donc créer automatiquement des fichiers de ressources.

Avec Visual Studio, je me positionne dans la partie Design du formulaire que je souhaite "localiser", ici il s'agit du formulaire de Login des utilisateurs qui se trouve dans le répertoire Member. Et je clique sur le menu Outil->Créer automatiquement des fichiers de ressources. Voilà le travail est fait, le fichier :
/Member/App_LocalResources/Login.aspx.resx est créé.

Je créé la langue "en" (English) en dupliquant le fichier Login.aspx.resx et en le renommant en Login.aspx.en.resx puis je traduis les labels.

Voilà, c'est terminé !

Vous pouvez retrouver ce travail sur le site GitHub du projet : ASP-NET-Survey-Online

Commiter ce travail de "localisation"

Je cherche maintenant à commiter ce travail dans mon GitHub. On me dit que la meilleur commande pour savoir ce qu'il se passe, c'est de vérifier l'état des fichiers par :

$git status

Command Git Status
Si je compare avec ce que j'obtiens dans Git UI :

Git UI
Pas de doutes, c'est sensiblement la même chose. Et maintenant comment commiter ?

Ignorer certains fichiers

C'est indispensable pour une bonne gestion du votre projet. En effet "mettre sous surveillance" des fichiers inutile peut être néfaste...

Posez, à la racine du répertoire un fichier .gitignore avec au moins une ligne (Visual Studio)  :
*.suo

Pour ignorer les fichiers de Visual Studio, whaou mais .gitignore n'est pas un nom de fichier ! ... ma ma ma poua grrrrr ! Donc la seule façon de créer un fichier .gitignore, c'est avec la console Git Bash et la commande :

$ echo "*.suo" > .girignore

Et oui, pensons Linux !

Checkout master

Voici, ici expliquée la philosophie du truc. Dans le Tuto Git précédent on est coincé, on va donc chercher à "Brancher" à "Merger" pour se retrouver sur la branche master. Car une branche HEAD à été crée pour réaliser cette nouvelle fonctionnalité et l'on en a plus besoin.

https://git-scm.com/book/fr/v1/Les-branches-avec-Git-Brancher-et-fusionner%C2%A0%3A-les-bases

On ouvre "Visualize All Branch history" de Git UI menu "Repository" et l'on obtient "après opération", le résultat suivant :

gitk
J'ai donc checkouté la branche master. Je veux essayer de Merger Head avec master. Je retourne dans Git UI. Je Merge->Local Merge... Et je peux alors pusher sur le serveur.

Je pushe pour mettre mon travail sur le serveur :

Git me laisse Pusher ma branche mergée
Je vérifie et ça fonctionne, j'ai bien la Localization dans mon GitHub :

Résultat du Push je retrouve mon travail sur le serveur GitHub
C'est un peu empirique mais bon ...

Pour aller plus loin je vous propose une vidéo :

https://www.grafikart.fr/formations/git/fork-pull-request
Ca part d'un peu trop loin, en plus il mélange GitHub et Bitbucket mais c'est intéressant sur les notions de Fork et de PullRequest.

Comprendre la philo de Git

C'est une différence essentielle entre Git et TFS avec TFs vous travailler sur la branche principale, le tronc. Vos modifications sont en différence par rapport au tronc et c'est elles qui constituent le "commit" ou le "checkin".

Avec Git, dès que vous avez une modification à faire, vous devez créer une branche et c'est la branche que vous commitez. Sans branche point de commit !

Have fun !

Tuto Git - Pourquoi on ne peut pas Pusher ?

C'est délicat, vous avez fait un peu de travail dans GitHub par exemple vous avez complété le fichier README.md directement dans l'interface Web et donc :

Tuto Git - pourquoi je ne peux plus pusher ?

Bon, ce n'est pas grave vous checktoutez : Branch->Checkout. Puis vous faites un peu de travail en local et vous tentez de pusher et là :

Tuto Git - pourquoi je ne peux plus pusher ?

Ah, ce n'est tout à fait le même message... On va peut être finir par y arriver.

Tuto Git

Clique sur le bouton "Commit" :

Git - Commit potentially dangerous

En effet c'est dangereux si vous procédez ainsi, les fichiers de votre copie locale seront vu comme étant archivés alors qu'ils ne le sont pas.

On se retrouve dans une situation où l'on ne peut pas "pusher" mais on peut "commiter" ! 

What the fuck !

mardi 17 mai 2016

Tuto Git - Comment créer un fichier sur GitHub et le conserver dans Git UI

Vous venez d'effacer le fichier README.md, et bien oui Git a tout effacé. En effet lors de votre dernier commit vous en aviez marre de voir le message "Impossible de commit" bla bla bla... en fait vous aviez créé un fichier sur GitHub et vous ne l'aviez pas rapatrié sur votre disque dur.

Et oui, GitHub va vous harceler afin de créer un fichier README.md et c'est bien normal car c'est le fichier de présentation de votre solution dans GitHub. Vous cliquez donc "Create README.md" et lors du prochain Commit ce fichier sera effacé.

GiHub Création du fichier README.md

Retrouver le fichier README.md sur votre Disque Dur

Vous me direz c'est super simple il suffit de faire un Get Lateste Version sur le fichier README.md dans Git cela donne ceci :

Merge Into master
Et vous retrouvez votre fichier, créé avec GitHub sur votre disque dur :



Have fun !

mercredi 27 avril 2016

Tuto Git - Bien démarrer avec Git GUI sous Windows

Les tutos sur Git GUI sont rares, Linux oblige et comme on est sous Windows, ils sont difficilement accessibles. En général on tombe sur Gui Bash et des lignes de commandes. Essayons de nous en sortir quand même avec Git GUI sous Windows.

Git Gui Windows
Download - Git GUI pour Windows

Mais pour ceux qui utilisent Git sous Windows, il est quand même plus simple et plus intuitif d'avoir des écrans que la console en mode prompteur :

Git Bash en ligne de commandes

Je prends ici quelques notes, je compléterai par la suite... Voici donc Git GUI :

Git Gui Windows
Git GUI pour Windows - en finir avec les lignes de commandes

Pour "Gitter" un projet (c'est à dire le mettre en gestion des configurations avec Git dans GitHub), cela se passe en trois temps...

1 - Référencer les sources à gitter dans Git
Dans le répertoire que l'on veut "Gitter" faire : bouton droit->Git GUI Here
Choisir le répertoire à Gitter. un répertoire ".git" caché est alors créé. Attention cochez "afficher les fichiers cachés".
La liste des fichiers "Gitter" apparait "en haut" de Git GUI dans "Unstage Changes".

2 - Commiter les sources en cliquant sur le bouton "Commit"
Si on est sous windows alors il faut traiter les CRLF...
La liste des sources à gitter se trouve maintenant en bas dans "Staged Changes".

3 - Uploader sur le "remote repository"
On a créé un repository dans GitHub. Il faut alors faire un "Push" avec les bonnes coordonnées du repositorie distant pour que les sources alors apparaissent en ligne...

Miraculus !

Git GUI - Installation sous Windows

Une fois que vous avez téléchargé l'exécutable Git-2.9.0-64-bit.exe et que vous cliquez dessus, voici quelques copies d'écrans des éléments qu'il vous faudra configurer.

Git Gui - Installation Windows
Git GUI - Installation sous Windows - Choix de l'interface

Franchement, je ne vois pas l'utilité ici de choisir "Use Git from Git Bash only". Nous n'aurions alors que la console Bash à notre disposition.

Git GUI - Installation sous Windows - Choix du mode CRLF ou LF

Il vaut certainement mieux choisir l'option "Checkout Windows-style, commit Unix-style line endings" pour être un peu sympa avec les linuxiens. "as-is" est la meilleure option, c'est à l'utilisateur final de contrôler ce qu'il fait...

Git GUI - Installation Windows - 1
Git GUI - Installation sous Windows - Choisir MinTTY ou default console Windows

Encore quelques efforts ...

Git GUI - Installation sous Windows
Git GUI - Installation sous Windows - Encore des options pfff...

Je choisie cs options pourquoi pas ...

Git GUI - Installation sous Windows
Git - Installation sous Windows - Exécution de l'installation

Ca y est l'installation a démarrée ...

Git GUI - Installation sous Windows
Git - Installation sous Windows - Exécution terminée

Pfff c'est pas trop tôt, j'espère que je pourrais changer l'option "choix du mode CRLF/LF" ... que j'ai choisie peut être un peu vite lors de cette Installation de Git GUI.

Une fois l'installation terminée, vous vous placez dans le répertoire que vous souhaitez Gitter en suite vous cliquez "bouton droit" vous avez l'option Git GUI Here :

Git GUI - Installation Windows
Git GUI - Installation sous Windows - Guitter votre répertoire

Vous venez de créer votre premier Repositorie Git pour Gitter dans GitHub. Pour cela, il vous faut :


Voilà c'est terminé ! Nous avons maintenant à porté de cliquer la puissance du gestionnaire de codes sources Git GUI sous Windows.

Have Fun with Git, don't forget it's only software !

mardi 26 avril 2016

Vous souhaitez savoir à quoi sert Git & GitHub par rapport à TFS & Codeplexe

Vous êtes au bon endroit. Git, ou GitHub si on parle du site en ligne, est un gestionnaire de codes sources. Alors pourquoi après CSV, SNV, ClearCase, TFS et bien d'autres un nouveau gestionnaire de codes sources ?

Franchement, je ne sais pas !

Je ne vais pas décrire Team Foundation Server, je présuppose que l'on connait.

Git est encore un de ces outils Linuxien... comment dire, comment dire sans les vexer... un outil console quoi. Si vous n'avez pas les commandes en tête rien n'est intuitif. Voici la belle console MinGW64 de GitHub :

Git - Console command
Ah, il y a aussi une IHM :

Git GUI - IHM
Et plein de problèmes... au moment de commiter.

Git problem with CRLF
Oh la la, ça recommence, ah oui Linux, le truc qui n'aime pas les CRLF, à moins que se soit Windows qui n'aime pas les LF... bref une prise en main bien dificile.

Et ça continue...

Compress the database now? - Non merci sans façon...
En essayant d'aller un peu plus loin :

Git - Push command
Etant donné le côté ultra-intuitif de cet outil, il faudra maintenant parcourir un bon tuto. Celui-ci n'est pas mal...

https://matthew-brett.github.io/pydagogue/git_gui_windows.html
Mais il est en anglais

Conclusion sur Git Hub

La rapidité est excellente avec Git, c'est vrai. Mais les outils sont du type console, même s'il y a une interface la plus part de l'aide est en lignes de commandes. Il va falloir beaucoup d'investissement pour prendre en main ce gestionnaire de configuration.

Avantage : Vous n'avez pas à installer de serveur, tout se fait dans le cloud en créant un compte Git Hub et les repositories pour y placer vos projets.

Inconvénient majeur de Git Hub

L'inconvénient majeur c'est le référencement. Les pages des Wikis de GitHub ne sont pas faites pour être référencées.

J'ai créé un projet ASP-NET-Survey-Online sur Git hub et quand j'effectue une recherche avec google voici le résultat :
Référencement de mon projet dans Git Hub

On voit très clairement que ce n'est pas mon projet qui est mis en avant mais Git Hub, c'est idiot.

D'abord vous avez ce "GitHub-" qui est mis en avant. En suite : "contribute to " nom du projet "development by creating an account on GitHub.

Ce n'est pas moi qui ai écrit cela mais GitHub qui fagocite mon projet.