854 votes

Git pour les débutants : Le guide pratique définitif

Ok, après avoir vu ce message par PJ Hyett j'ai décidé d'aller jusqu'au bout et d'opter pour Git .

Donc ce dont j'ai besoin, c'est d'un guide pour débutants. pratique Guide de Git. "Débutant" étant défini comme quelqu'un qui sait comment manipuler son compilateur, comprend à un certain niveau ce qu'est une Makefile est, et a touché au contrôle de la source sans très bien le comprendre.

"Pratique" étant défini comme la personne qui ne veut pas entrer dans les détails de ce que Git fait en arrière-plan, et qui ne se soucie même pas (ou ne sait pas) qu'il est distribué. Vos réponses pourraient faire allusion aux possibilités, mais essayez de viser le débutant qui veut garder un dépôt "principal" sur un "serveur" qui est sauvegardé et sécurisé, et traiter leur dépôt local comme une simple ressource "client".

Donc :

Installation/Setup

Travailler avec le code

Étiquetage, branchement, versions, lignes de base

Autre

  • Décrivez une bonne interface graphique, un plugin IDE, etc., qui fait de Git une ressource sans ligne de commande, et indiquez ses limites et ses avantages.
    • msysgit - Multiplateforme, inclus avec Git
    • gitk - Visualiseur d'historique multiplateforme, inclus avec Git
    • gitnub - Mac OS X
    • gitx - Visualisation de l'historique de Mac OS X
    • smartgit - Plate-forme croisée, commerciale, bêta
    • tig - console GUI pour Linux
    • qgit - Interface graphique pour Windows, Linux
    • Extensions Git - pour Windows, comprend une interface graphique conviviale
  • Y a-t-il d'autres tâches courantes qu'un débutant devrait connaître ?
  • Comment travailler efficacement avec un dépôt de subversion défini comme source de contrôle des sources ?

Autres références pour les débutants de Git

Se plonger dans Git

Je passerai en revue les entrées de temps en temps et les "nettoierai" pour qu'elles aient un aspect cohérent et qu'il soit facile de parcourir la liste - n'hésitez pas à suivre un modèle simple "en-tête - brève explication - liste d'instructions - problèmes et informations supplémentaires". Je vais également créer un lien vers les entrées de la liste à puces ci-dessus afin qu'il soit facile de les retrouver plus tard.

46voto

ashwoods Points 1479

Exemple de flux de travail avec GIT.

Git est extrêmement flexible et s'adapte bien à n'importe quel flux de travail, mais ne pas imposer un flux de travail particulier pourrait avoir l'effet négatif de rendre difficile la compréhension de ce que vous pouvez faire avec git au-delà du flux de travail linéaire de "sauvegarde", et de l'utilité des branchements par exemple.

Este article de blog explique joliment un flux de travail très simple mais efficace qui est vraiment facile à mettre en place en utilisant git.

en citant l'article du blog : Nous considérons origin/master comme la branche principale où le code source de HEAD reflète toujours un état prêt pour la production :

Le flux de travail est devenu suffisamment populaire pour que l'on ait créé un projet qui met en œuvre ce flux de travail : Flux git

Belle illustration d'un flux de travail simple, où l'on effectue toutes les modifications dans le module de développement, et où l'on ne pousse vers le module maître que lorsque le code est en état de production :

simple workflow

Imaginons maintenant que vous souhaitiez travailler sur une nouvelle fonctionnalité ou sur le remaniement d'un module. Vous pouvez créer une nouvelle branche, que nous pourrions appeler une branche "fonctionnalité", quelque chose qui prendra un certain temps et pourrait casser du code. Une fois que votre fonctionnalité est "suffisamment stable" et que vous souhaitez la "rapprocher" de la production, vous fusionnez votre branche "fonctionnalité" avec la branche "développement". Lorsque tous les bogues sont résolus après la fusion et que votre code passe tous les tests avec succès, vous transférez vos modifications dans master.

Pendant tout ce processus, vous trouvez un terrible bug de sécurité, qui doit être corrigé immédiatement. Vous pourriez avoir une branche appelée "hotfixes", qui apporte des changements qui sont repoussés plus rapidement dans la production que la branche normale "développement".

Voici une illustration de ce à quoi pourrait ressembler ce flux de travail fonctionnalité/hotfix/développement/production (bien expliqué dans l'article de blog, et je le répète, l'article de blog explique l'ensemble du processus de manière bien plus détaillée et bien mieux que je ne le fais.

Git workflow example

39voto

Adam Davis Points 47683

Voici une copie du post de PJ Hyett, car il n'est plus disponible :

Le Git n'est pas difficile

23 novembre 2008

Quand nous disons aux gens pourquoi ils devraient d'utiliser Git plutôt que Subversion, la réplique est " Git fait mieux Subversion que Subversion que Subversion, mais il fait beaucoup beaucoup plus que ça".

Le "beaucoup plus" est composé d'un tas de choses de choses qui font que Git brille vraiment, mais cela peut être assez accablant pour ceux qui viennent d'autres SCM's comme Subversion.

Cela dit, il n'y a rien qui vous empêche d'utiliser Git tout comme vous utilisez Subversion pendant que vous faites la transition.

En supposant que vous avez installé le logiciel nécessaire et que vous disposez d'un quelque part, c'est ainsi que vous saisissez le code et repoussez vos modifications avec Subversion :

$ svn checkout svn://foo.googlecode.com/svn/trunk foo
# make your changes
$ svn commit -m "my first commit"

Et comment le faire dans Git :

$ git clone git@github.com:pjhyett/foo.git
# make your changes
$ git commit -a -m "my first commit"
$ git push

Une commande supplémentaire pour que cela se produise dans Git. Cette commande supplémentaire a de grandes implications, mais pour les besoins de cet article, c'est tout ce dont nous parlons. d'une commande supplémentaire.

Tu vois, ce n'est vraiment pas si difficile.

Mise à jour : Je serais négligent de ne pas mentionner aussi que l'équivalent de mise à jour de votre copie locale dans Subversion par rapport à Git est svn update et git pull respectivement. Une seule commande commande dans les deux cas.

33voto

dbr Points 66401

Comment installer Git

Sous Windows :

Installer msysgit

Il y a plusieurs téléchargements :

  • Git : Utilisez cette option sauf si vous avez spécifiquement besoin d'une des autres options ci-dessous.
  • PortableGit : Utilisez cette option si vous souhaitez exécuter Git sur un PC sans l'installer sur ce PC (par exemple, exécuter Git à partir d'une clé USB).
  • msysGit : Utilisez ceci si vous voulez développer Git lui-même. Si vous souhaitez simplement utiliser Git pour votre le code source, mais ne veulent pas modifier Git's code source, vous n'en avez pas besoin.

Cela installe également un shell Cygwin bash, ce qui vous permet d'utiliser la commande git dans un shell plus agréable (que cmd.exe), et inclut également git-gui (accessible via git gui ou la commande Start > All Programs > Git menu)

Mac OS X

Utilisez le git-osx-installer ou vous pouvez également installer à partir des sources

Via un gestionnaire de paquets

Installer git en utilisant votre gestionnaire de paquets natif. Par exemple, sur Debian (ou Ubuntu) :

apt-get install git-core

Ou sur Mac OS X, via MacPorts :

sudo port install git-core+bash_completion+doc

ou fink :

fink install git

ou Homebrew :

brew install git

Sur les distributions basées sur Red Hat, telles que Fedora :

yum install git

Dans Cygwin, le paquet Git se trouve dans la section "devel".

À partir de la source (Mac OS X/Linux/BSD/etc.)

Sous Mac OS X, si vous avez installé les Developer Tools, vous pouvez compiler Git à partir des sources très facilement. Téléchargez la dernière version de Git en tant que .tar.bz o .tar.gz de http://git-scm.com/ et l'extraire (double clic dans le Finder).

Sous Linux/BSD/etc., cela devrait être à peu près la même chose. Par exemple, dans Debian (et Ubuntu), vous devez installer le programme build-essential paquet via apt .

Puis dans un Terminal, cd à l'endroit où vous avez extrait les fichiers (Exécution cd ~/Downloads/git*/ devrait fonctionner), et ensuite exécuter..

./configure && make && sudo make install

Ceci va installer Git à l'endroit par défaut ( /usr/local - donc git sera dans /usr/local/bin/git )

Il vous demandera d'entrer votre mot de passe (pour l'option sudo ), afin qu'il puisse écrire dans le dossier de l'utilisateur. /usr/local/ qui ne peut être accédé que par l'utilisateur "Root", donc sudo est nécessaire !

Si vous souhaitez l'installer dans un endroit séparé (afin que les fichiers de Git ne soient pas mélangés à d'autres outils), utilisez la méthode suivante --prefix avec la commande configure :

./configure --prefix=/usr/local/gitpath
make
sudo make install

Cela va installer le git binaire en /usr/local/bin/gitpath/bin/git - pour que vous n'ayez pas à taper ça à chaque fois que vous, vous devriez ajouter dans votre $PATH en ajoutant la ligne suivante dans votre ~/.profile :

export PATH="${PATH}:/usr/local/bin/gitpath/bin/"

Si vous n'avez pas d'accès sudo, vous pouvez utiliser --prefix=/Users/myusername/bin et l'installer dans votre répertoire personnel. N'oubliez pas d'ajouter ~/bin/ a $PATH

Le script x-git-update-to-latest-version automatise une grande partie de ces opérations :

Ce script met à jour mon clone local du repo git (localy at ~/work/track/git ), puis configure, installe (à l'adresse /usr/local/git - git describe ) et met à jour le /usr/local/git lien symbolique.

De cette façon, je peux avoir /usr/local/git/bin dans mon PATH et j'utilise toujours la dernière version.

La dernière version de ce script installe également les pages de manuel. Vous devez modifier votre MANPATH pour inclure le /usr/local/git/share/man répertoire.

32voto

Dean Rather Points 7856

Réinitialisation de Git

Disons que vous faites un pull, le fusionnez dans votre code, et décidez que vous ne l'aimez pas. Utilisez git-log, ou tig, et trouvez le hash de l'endroit où vous voulez retourner (probablement votre dernier commit avant le pull/merge) copiez le hash, et faites :

# Revert to a previous commit by hash:
git-reset --hard <hash>

Au lieu du hachage, vous pouvez utiliser HEAD^ comme un raccourci pour le commit précédent.

# Revert to previous commit:
git-reset --hard HEAD^

31voto

Asgeir S. Nilsen Points 805

Comment mettre en place un référentiel d'équipe partagé ?

Comment mettre en place un normal Le référentiel est décrit aquí -- mais comment mettre en place un référentiel d'équipe que tout le monde peut consulter et utiliser ?

Utilisation d'un système de fichiers NFS partagé

En supposant que votre équipe dispose déjà, par exemple, d'une adhésion de groupe partagée qui peut être utilisée.

mkdir /your/share/folder/project.git
cd /your/share/folder/project.git
newgrp yourteamgroup # if necessary
git init --bare --shared

Pour commencer à utiliser ce référentiel, le plus simple est de partir d'un référentiel local que vous avez déjà utilisé :

cd your/local/workspace/project
git remote add origin /your/share/folder/project.git
git push origin master

D'autres peuvent maintenant le cloner et commencer à travailler :

cd your/local/workspace
git clone /your/share/folder/project.git

Utilisation de SSH

Configurez un compte utilisateur sur le serveur cible. Que vous utilisiez un compte sans mot de passe, un compte avec un mot de passe ou que vous utilisiez un compte avec un mot de passe, vous devez configurer le compte d'utilisateur. authorized_keys dépendent vraiment du niveau de sécurité que vous souhaitez. Jetez un coup d'œil à Configuration de Git via SSH pour plus d'informations.

Si tous les développeurs utilisent le même compte pour accéder à ce référentiel partagé, il n'est pas nécessaire d'utiliser la commande --shared comme ci-dessus.

Après avoir ouvert le référentiel de la même manière que ci-dessus, vous effectuez la poussée initiale comme ceci :

cd your/local/workspace/project
git remote add origin user@server:/path/to/project.git
git push origin master

Vous voyez la similitude avec ce qui précède ? La seule chose qui pourrait se produire en plus est que SSH demande un mot de passe si le compte a un mot de passe. Si vous obtenez cette demande sur un compte sans mot de passe, le serveur SSH a probablement désactivé le mot de passe. PermitEmptyPasswords .

Le clonage ressemble maintenant à ceci :

cd your/local/workspace
git clone user@server:/path/to/project.git

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X