854 votes

Git pour les débutants: The definitive guide pratique

Ok, après avoir vu ce post par PJ Hyett, j'ai décidé de sauter à la fin et aller avec Git.

Donc, ce que je besoin est un débutant pratique guide de Git. "Débutant" étant défini comme quelqu'un qui sait comment traiter leurs compilateur, comprend jusqu'à un certain niveau qu'un Makefile est, et a touché de contrôle à la source, sans comprendre très bien.

"Pratique" étant défini comme cette personne ne veut pas entrer dans de grands détails au sujet de ce que Git est fait en arrière-plan, et ne prend même pas le soin (ou de savoir) qu'il est distribué. Vos réponses pourraient suggérer les possibilités, mais essayez de viser pour le débutant qui veut garder un 'main' espace de stockage sur un "serveur" qui sont sauvegardées et sécurisées, et de traiter leurs référentiel local simplement comme un "client" de ressources.

Donc:

Installation/Configuration

En travaillant avec le code

Le marquage, les branchements, les rejets, les lignes de base

D'autres

  • Les décrire et de les lier à une interface graphique, IDE plugin, etc. qui rend Git un non-ligne de commande de ressources, mais s'il vous plaît la liste de ses limites ainsi que sa bonne.
    • msysgit - Croix-plate-forme, inclus avec Git
    • gitk - Croix-plate-forme de l'histoire de la visionneuse, inclus avec Git
    • gitnub - Mac OS X
    • gitx - Mac OS X de l'histoire de la visionneuse
    • smartgit - Croix-plate-forme, commercial, bêta
    • tig - console de l'interface graphique pour Linux
    • qgit - GUI pour Windows, Linux
    • Git Extensions - package pour Windows, comprend graphique conviviale
  • Toutes les autres tâches courantes d'un débutant doit savoir?
  • Comment travailler efficacement avec un dépôt subversion, défini comme ma source de source de contrôle?

D'autres Git du débutant références

Fouiller dans Git

Je vais aller à travers les entrées de temps en temps et de 'ranger' les de sorte qu'ils ont une apparence uniforme/sentir et il est facile de parcourir la liste - n'hésitez pas à suivre un simple "tête - brève explication - liste d'instructions - astuces et des infos en" modèle". Je vais également des liens vers les entrées de la liste à puces ci-dessus de sorte qu'il est facile de les trouver plus tard.

118voto

dbr Points 66401

Comment voulez-vous créer un nouveau projet/référentiel?

Un dépôt git est simplement un répertoire contenant un spécial .git répertoire.

Ceci est différent de la "centrale" de la version systèmes de contrôle (comme subversion), où un "référentiel" est hébergé sur un serveur distant, vous checkout dans une "copie de travail" répertoire. Avec git, votre copie de travail est le référentiel.

Exécutez simplement git init dans le répertoire qui contient les fichiers que vous souhaitez suivre.

Par exemple,

cd ~/code/project001/
git init

Cela crée un .git (caché) de dossier dans le répertoire courant.

Pour faire un nouveau projet, exécutez git init avec un argument supplémentaire (le nom du répertoire doit être créé):

git init project002

(This is equivalent to: mkdir project002 && cd project002 && git init)

Pour vérifier si le chemin d'accès actuel est dans un dépôt git, il suffit de lancer git status - si ce n'est pas un référentiel, il signale "fatale: Pas un dépôt git"

Vous pouvez également la liste de l' .git répertoire, et vérifiez qu'il contient les fichiers/répertoires semblable à la suivante:

$ ls .git
HEAD         config       hooks/       objects/
branches/    description  info/        refs/

Si, pour quelque raison que ce soit que vous voulez "de-git" un référentiel (vous souhaitez arrêter d'utiliser git pour suivre ce projet). Retirez simplement l' .git répertoire au niveau de la base du référentiel.

cd ~/code/project001/
rm -rf .git/

Attention: Cela va détruire tout l'historique des révisions, tous vos balises, tout git a fait. Il ne touche pas le "courant" des fichiers (les fichiers que vous pouvez actuellement voir), mais les modifications des fichiers supprimés, et ainsi de suite) sera irrécupérable!

59voto

Pat Notz Points 46841

Eh bien, malgré le fait que vous nous a demandé de ne pas "simplement" des liens vers d'autres ressources, il est assez stupide quand il existe déjà une communauté cultivé (et croissante) de la ressource qui est vraiment très bon: le Git Community Book. Sérieusement, ce 20+ questions dans une question va être n'importe quoi, mais cohérent et concis. Le Git Community Book est disponible en format HTML et PDF, et des réponses à beaucoup de vos questions claires, bien formatés et examinées par des pairs des réponses et dans un format qui vous permet de sauter directement à votre problème à portée de main.

Hélas, si mon post dérange vraiment vous, alors je vais le supprimer. Juste le dire.

56voto

Brian Gianforcaro Points 11985

Comment le configurer pour ignorer les fichiers:

La possibilité d'avoir git d'ignorer les fichiers que vous ne voulez pas de piste est très utile.

Pour ignorer un fichier ou ensemble de fichiers vous fournir un motif. La syntaxe des motifs pour git est assez simple, mais puissant. Il est applicable à tous les trois des fichiers différents, je vais parler ci-dessous.

  • Une ligne vide ignore pas les fichiers, il est généralement utilisé en tant que séparateur.
  • Les lignes de regarder avec # servent de commentaires.
  • L' ! préfixe est facultatif et réduit à néant le modèle. Tout nié modèle qui correspond à remplacent de priorité plus basse des modèles.
  • Prise en charge des expressions et des cartes sauvages
    • Ex: Le modèle: *.[oa] ignore tous les fichiers dans le référentiel se terminant en .o ou .un (objet et l'archivage de fichiers)
  • Si un modèle a un répertoire terminant par une barre oblique git ne correspondent à ce répertoire et les chemins d'accès-dessous. Ce qui exclut les fichiers réguliers et les liens symboliques dans le même match.
  • Un slash correspond à tous les fichiers de ce nom de chemin d'accès.
    • Ex: Le motif /*.c correspondra le fichier foo.c mais pas de bar/awesome.c

Excellent Exemple de la gitignore(5) de la page de manuel:

$ git status
[...]
# Untracked files:
[...]
#       Documentation/foo.html
#       Documentation/gitignore.html
#       file.o
#       lib.a
#       src/internal.o
[...]
$ cat .git/info/exclude
  # ignore objects and archives, anywhere in the tree.
  *.[oa]
$ cat Documentation/.gitignore
# ignore generated html files,
*.html
# except foo.html which is maintained by hand
!foo.html
$ git status
[...]
# Untracked files:
[...]
#       Documentation/foo.html
[...]


Généralement, il y a trois façons différentes de l'ignorer sans traces de fichiers.

1) Ignorer pour tous les utilisateurs du référentiel:

Ajouter un fichier nommé .gitignore à la racine de votre copie de travail.

Edit .gitignore pour correspondre à vos préférences pour les fichiers qui devrait ou ne devrait pas être ignorée.

git add .gitignore

et commettre lorsque vous avez terminé.

2) Ignorer pour votre copie du dépôt:

Ajouter/Éditer le fichier $GIT_DIR/info/exclure dans votre copie de travail, avec votre préféré modèles.

Ex: Ma copie de travail est ~/src/projet1 je voudrais donc modifier ~/src/projet1/.git/info/exclure

Vous avez terminé!

3) ne pas tenir compte dans toutes les situations, sur votre système:

Mondial ignorer modèles pour votre système peut aller dans un fichier nommé ce que jamais vous le souhaitez.

Le mien est personnellement appelé ~/.gitglobalignore

Je peux alors laisser git savoir de ce fichier en modifiant mon ~/.gitconfig fichier avec la ligne suivante:

core.excludesfile = ~/.gitglobalignore

Vous avez terminé!

Je trouve le gitignore page de man pour être la meilleure ressource pour plus d'informations.

47voto

dbr Points 66401

Comment avez-vous "tagger" un ensemble particulier de révisions

Comment avez-vous "marque "" tag " ou "libération" d'un ensemble particulier de révisions pour un ensemble de fichiers de sorte que vous pouvez toujours tirer un plus tard?

À l'aide de l' git tag commande.

Simplement "tag" de la révision en cours, vous exécutez..

git tag -a thetagname
git tag -a 0.1
git tag -a 2.6.1-rc1 -m 'Released on 01/02/03'

Pour la liste actuelle des balises, il suffit de lancer git tag sans arguments, ou -l (en minuscule L):

$ git tag -a thetagname # and enter a message, or use -m 'My tag annotation'
$ git tag -l
thetagname

Pour supprimer un tag, vous utilisez l' -d drapeau:

$ git tag -d thetagname 
Deleted tag 'thetagname'
$ git tag
[no output]

À une balise spécifique (précédent) s'engager, il vous suffit de faire..

git tag [tag name] [revision SHA1 hash]

Par exemple:

git tag 1.1.1 81b15a68c6c3e71f72e766931df4e6499990385b


Remarque: par défaut, git crée un "léger" de la balise (en gros une référence à une révision spécifique). La "bonne" façon est d'utiliser l' -a drapeau. Cela permettra de lancer votre éditeur de demander une étiquette de message (identique à demander un message de commit, vous pouvez également utiliser l' -m drapeau pour l'alimentation de l'étiquette de message sur la ligne de commande). À l'aide d'un annotée tag crée un objet avec son propre ID, date, tagger (auteur), et éventuellement une signature GPG (à l'aide de l' -s tag). Pour de plus amples informations à ce sujet, voir ce post

git tag mytagwithmsg -a -m 'This is a tag, with message'

Et à la liste de balises avec des annotations, l'utilisation de l' -n1 drapeau pour montrer 1 ligne de chaque balise message (-n245 pour montrer la première 245 lignes de chaque annotation, et ainsi de suite):

$ git tag -l -n1
mytagwithmsg    This is a tag, with message

Pour plus d'informations, voir le git tag-(1) Page de Manuel

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