Question Git pour les débutants: le guide pratique définitif


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

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

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

Alors:

Installation / Configuration

Travailler avec le code

Marquage, branchement, rejets, lignes de base

Autre

  • Décrivez et créez un lien vers une bonne interface graphique, un plugin IDE, etc. qui fait de Git une ressource en ligne sans commande, mais veuillez en énumérer les limites ainsi que les bonnes.
    • msysgit - Plate-forme croisée, incluse avec Git
    • gitk - Visionneuse de l'historique Cross Platform, incluse avec Git
    • gitnub - Mac OS X
    • gitx - Visionneuse d'historique Mac OS X
    • smartgit - Plate-forme croisée, commerciale, beta
    • tig- GUI de la console pour Linux
    • qgit - GUI pour Windows, Linux
    • Git Extensions - paquet pour Windows, comprend une interface graphique conviviale
  • Toutes les autres tâches courantes qu'un débutant devrait savoir?
  • Comment puis-je travailler efficacement avec un ensemble de référentiels subversion en tant que source de contrôle de source?

Les autres références de Git pour débutants

Fouiller dans Git

Je vais passer en revue les entrées de temps en temps et les «ranger» afin qu'elles aient un aspect cohérent et qu'il soit facile de balayer la liste - n'hésitez pas à suivre un simple «en-tête - brève explication - liste d'instructions - getchas et info supplémentaire "modèle. Je vais également faire un lien vers les entrées de la liste ci-dessus afin qu'il soit facile de les retrouver plus tard.


854
2017-11-26 09:26


origine


Réponses:


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

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

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

Simplement courir 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é) dans le répertoire courant.

Pour créer un nouveau projet, exécutez git init avec un argument supplémentaire (le nom du répertoire à créer):

git init project002

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

Pour vérifier si le chemin courant actuel est dans un dépôt git, exécutez simplement git status - S'il ne s'agit pas d'un dépôt, il signalera "fatal: Not a git repository"

Vous pouvez également lister les .git répertoire, et vérifiez qu'il contient des fichiers / répertoires similaires à ce qui suit:

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

Si, pour une raison quelconque, vous souhaitez "dé-giter" un dépôt (vous souhaitez arrêter d'utiliser git pour suivre ce projet). Retirez simplement le .git répertoire au niveau de base du référentiel.

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

Mise en garde: Cela détruira tout Historique des révisions, tout vos tags, tout git a fait. Il ne touchera pas les fichiers "en cours" (les fichiers que vous pouvez actuellement voir), mais les changements précédents, les fichiers supprimés et ainsi de suite seront irrécupérables!


118
2017-11-25 00:49



GUI pour git


Git GUI

Inclus avec git - Run git gui à partir de la ligne de commande, et Windows msysgit Le programme d'installation l'ajoute au menu Démarrer.

Git GUI peut faire la majorité de ce que vous devez faire avec git. Y compris les changements d'étape, configurer git et les dépôts, pousser les changements, créer / vérifier / supprimer des branches, fusionner, et bien d'autres choses.

L'une de mes fonctionnalités préférées est les raccourcis "line stage" et "stage hunk" dans le menu contextuel, qui vous permet de valider des parties spécifiques d'un fichier. Vous pouvez réaliser la même via git add -i, mais je le trouve plus facile à utiliser.

Ce n'est pas la plus jolie application, mais elle fonctionne sur presque toutes les plateformes (basée sur Tcl / Tk)

Captures d'écran | un screencast


GitK

Aussi inclus avec git. C'est un visualiseur d'historique git, et vous permet de visualiser l'historique d'un dépôt (y compris les branches, quand ils sont créés et fusionnés). Vous pouvez afficher et rechercher des validations.

Va bien ensemble avec git-gui.


Gitnub

Application Mac OS X Principalement un équivalent de git log, mais a une certaine intégration avec github (comme la "vue du réseau").

Il semble joli, et correspond à Mac OS X. Vous pouvez rechercher des dépôts. La plus grande critique de Gitnub est qu'elle montre l'histoire de façon linéaire (une seule branche à la fois) - elle ne visualise pas la ramification et la fusion, ce qui peut être important avec git, bien qu'il s'agisse d'une amélioration planifiée.

Télécharger les liens, modifier le journal et les captures d'écran | git repository


GitX

A l'intention d'être un "clone gitk pour OS X".

Il peut visualiser l'historique des branchements non linéaires, effectuer des commits, afficher et rechercher des commits, et il a d'autres fonctionnalités intéressantes comme "Quicklook" n'importe quel fichier dans une révision (espace dans la liste des fichiers), exporter n'importe quel fichier (par glisser-déposer).

Il est bien mieux intégré dans OS X que git-gui/gitk, et est rapide et stable même avec des dépôts exceptionnellement grands.

Le dépôt git d'origine pieter n'a pas été mis à jour récemment (plus d'un an au moment de la rédaction). Une branche plus activement maintenue est disponible à brotherbard / gitx - il ajoute "sidebar, chercher, tirer, pousser, ajouter à distance, fusionner, sélectionner, recomposer, cloner, cloner"

Télécharger | Captures d'écran | git repository | fourche brotherbard | fourchette laullon


SmartGit

De la page d'accueil:

SmartGit est un frontal pour le   système de contrôle de version distribuée Git   et fonctionne sur Windows, Mac OS X et   Linux. SmartGit est destiné à   les développeurs qui préfèrent un utilisateur graphique   interface sur un client de ligne de commande,   être encore plus productif avec Git -   le DVCS le plus puissant aujourd'hui.

Vous pouvez le télécharger depuis leur site web.

Télécharger


TortoiseGit

Version Git de TortoiseSVN pour les utilisateurs de Windows.

Il est le portage TortoiseSVN à TortoiseGit La dernière version 1.2.1.0 Cette version peut compléter la tâche régulière, telle commettre, afficher le journal, diff deux version, créer une branche et une balise, créer un patch et ainsi de suite. Voir Notes de version pour le détail. Bienvenue à contribuer ce projet.

Télécharger


QGit

QGit est un visualiseur git GUI construit sur   Qt / C ++.

Avec qgit vous pourrez naviguer   l'historique des révisions, afficher le contenu du correctif   et modifié les fichiers, graphiquement   suivant différents développements   branches.

Télécharger


gitg

gitg est une visionneuse de référentiel git   ciblage gtk + / GNOME. Un de ses principaux   objectifs est de fournir un plus   expérience utilisateur unifiée pour git   frontend sur plusieurs postes de travail. Il   Est-ce que ce n'est pas écrire un   application multi-plateforme, mais par   étroite collaboration avec similaire   clients pour d'autres systèmes d'exploitation   (comme GitX pour OS X).

Caractéristiques

  • Parcourir l'historique des révisions
  • Gérez les grands dépôts (charge le dépôt Linux, 17000+ révisions, moins de 1 seconde).
  • Commettre des modifications.
  • Stage / Unstage des mecs individuels.
  • Rétablir les changements.
  • Afficher le diff colorisé des changements dans les révisions.
  • Parcourez l'arborescence pour une révision donnée.
  • Exporter des parties de l'arbre d'une révision donnée.
  • Fournissez n'importe quel refspec qu'une commande telle que 'git log' peut comprendre pour construire l'historique.
  • Afficher et basculer entre les branches dans la vue de l'historique.

Télécharger: communiqués ou la source


Gitbox

Gitbox est un graphique Mac OS X   interface pour le contrôle de version Git   système. Dans une seule fenêtre, vous voyez   branches, histoire et travail   état du répertoire.

Les opérations quotidiennes sont faciles: étape   et désynchroniser les changements avec une case à cocher.   Commettre, tirer, fusionner et pousser avec un   un seul clic. Double-cliquez sur un changement à   montre un diff avec FileMerge.app.

Télécharger


Gity

Le site web de Gity ne contient pas beaucoup d'informations, mais d'après les captures d'écran, il semble qu'il s'agisse d'un git gui OS X open source riche en fonctionnalités.

Télécharger ou la source


Meld

Meld est un outil de comparaison et de fusion visuel.   Vous pouvez comparer deux ou trois fichiers et   les éditer en place (mise à jour des diffs   dynamiquement). Vous pouvez comparer deux ou   trois dossiers et le fichier de lancement   comparaisons. Vous pouvez parcourir et afficher un   copie de travail de la version populaire   systèmes de contrôle tels que CVS,   Subversion, Bazaar-ng et Mercurial   [et Git]

Téléchargements


Katana

Une interface graphique Git pour OSX par Steve Dekorte.

En un coup d'œil, voir quelles branches distantes   avoir des changements à tirer et repos local   avoir des changements à pousser. Les git ops de   ajouter, valider, pousser, tirer, marquer et réinitialiser   sont pris en charge ainsi que des différences visuelles   et navigation visuelle de la hiérarchie de projet   qui met en évidence les changements locaux et les ajouts.

Gratuit pour 1 dépôt, 25 $ pour plus.

Télécharger


Sprout (anciennement GitMac)

Se concentre sur rendre Git facile à utiliser. Comporte une interface utilisateur natif Cocoa (mac-like), navigation rapide dans le dépôt, clonage, push / pull, branchement / fusion, diff visuel, branches distantes, un accès facile au Terminal, et plus encore.

En rendant les actions Git les plus courantes intuitives et faciles à réaliser, Sprout (anciennement GitMac) rend Git convivial. Compatible avec la plupart des workflows Git, Sprout est idéal pour les concepteurs et les développeurs, la collaboration en équipe et les utilisateurs avancés et novices.

Télécharger | Site Internet


La tour

Une interface graphique Git riche en fonctionnalités pour Mac OSX. Essai gratuit de 30 jours, 59US $ pour une licence mono-utilisateur.

Télécharger | Site Internet


EGit

EGit est un fournisseur Eclipse Team pour le système de contrôle de version Git.   Git est un SCM distribué, ce qui signifie que chaque développeur a une copie complète   de toute l'histoire de chaque révision du code, faire des requêtes contre   l'histoire très rapide et polyvalent.

Le projet EGit implémente l'outil Eclipse sur le JGit   Implémentation Java de Git.

Télécharger | Site Internet


Git Extensions

Open Source pour Windows - installe tout ce dont vous avez besoin pour travailler avec Git dans un seul paquet, facile à utiliser.

Git Extensions est une boîte à outils pour rendre le travail avec Git sur Windows plus intuitif. L'extension shell s'intégrera dans Windows Explorer et présentera un menu contextuel sur les fichiers et les répertoires. Il existe également un plugin Visual Studio pour utiliser git depuis Visual Studio.

Télécharger

Un grand merci à dbr pour élaborer sur les trucs git gui.


SourceTree

SourceTree est un gratuit Client Mac pour Git, Mercurial et SVN. Construit par Atlassian, les gens derrière BitBucket, il semble fonctionner aussi bien avec n'importe quel système VC, ce qui vous permet de maîtriser un seul outil pour l'utiliser avec tous vos projets, mais ils sont contrôlés par la version. Feature-packed, et GRATUIT.

Expert-Ready et Feature-packed pour les utilisateurs novices et avancés:

Examiner les changesets sortants et entrants.   Cherry-pick entre les branches.   Manipulation des patchs, rebasage, stockage / rangement et bien plus encore.

Télécharger | Site Internet 



110
2017-11-25 01:04



Eh bien, malgré le fait que vous nous ayez demandé de ne pas "simplement" créer un lien vers d'autres ressources, il est assez stupide qu'il existe déjà une ressource communautaire (et croissante) qui est vraiment très bonne: Livre communautaire Git. Sérieusement, cette question de 20+ dans une question va être tout sauf concis et cohérent. Le livre communautaire Git est disponible en version HTML et PDF et répond à de nombreuses questions grâce à des réponses claires, bien formatées et évaluées par des pairs et dans un format qui vous permet de passer directement à votre problème.

Hélas, si mon message vous dérange vraiment, je vais le supprimer. Dites-le juste.


59
2017-11-27 04:58



Comment le configurer pour ignorer les fichiers:

La possibilité d'avoir des fichiers ignorés par git que vous ne souhaitez pas voir est très utile.

Pour ignorer un fichier ou un ensemble de fichiers, vous fournissez un motif. La syntaxe du pattern pour git est assez simple, mais puissante. Il s'applique à tous les trois des différents dossiers que je mentionnerai ci-dessous.

  • Une ligne vide ignore les fichiers, elle est généralement utilisée comme séparateur.
  • Lignes regardant fixement # servir de commentaires.
  • le ! Le préfixe est facultatif et annule le motif. Tout motif annulé qui correspond à la règle remplacera les modèles de priorité inférieure.
  • Prend en charge les expressions avancées et les caractères génériques
    • Ex: Le modèle: *. [oa]  ignorera tous les fichiers du référentiel se terminant par .o ou .a (fichiers objet et archive)
  • Si un canevas a un répertoire se terminant par une barre oblique, git ne fera que correspondre à ce répertoire et aux chemins situés en dessous. Cela exclut les fichiers ordinaires et les liens symboliques du match.
  • Une barre oblique correspond à tous les fichiers de ce nom de chemin.
    • Ex: Le motif /*.c va correspondre au fichier foo.c mais non bar / awesome.c

Grand exemple de la gitignore (5) 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 existe trois façons différentes d'ignorer les fichiers non-suivis.

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

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

modifier .gitignore pour correspondre à vos préférences pour quels fichiers devraient / ne devraient pas être ignorés.

git add .gitignore 

et commettre quand vous avez terminé.

2) Ignorer uniquement pour votre copie du référentiel:

Ajouter / Modifier le fichier $ GIT_DIR / info / exclure dans votre copie de travail, avec vos motifs préférés.

Ex: Ma copie de travail est ~ / src / project1 donc je modifierais ~ / src / project1 / .git / info / exclure

Vous avez terminé!

3) Ignorer dans toutes les situations, sur votre système: 

Les schémas globaux d'ignorer pour votre système peuvent aller dans un dossier nommé quoi que vous souhaitiez.

Le mien est personnellement appelé ~ / .gitglobalignore 

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

core.excludesfile = ~/.gitglobalignore

Vous avez terminé!

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


56
2017-11-27 13:25



Comment «étiqueter» un ensemble particulier de révisions

Comment marquer '' tag '' ou 'libérer' un ensemble particulier de révisions pour un ensemble de fichiers particulier afin que vous puissiez toujours le retirer plus tard?

En utilisant le git tag commander.

Pour simplement "étiqueter" la révision en cours, vous devez simplement exécuter ..

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

Pour lister les tags actuels, exécutez simplement git tag sans arguments, ou -l (minuscule L):

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

Pour supprimer un tag, utilisez le -d drapeau:

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

Pour marquer un commit spécifique (précédent), il vous suffit de le faire.

git tag [tag name] [revision SHA1 hash]

Par exemple:

git tag 1.1.1 81b15a68c6c3e71f72e766931df4e6499990385b

Note: par défaut, git crée une balise "légère" (essentiellement une référence à une révision spécifique). Le "bon" moyen est d'utiliser le -a drapeau. Cela lancera votre éditeur demandant un message de tag (identique à demander un message de validation, vous pouvez également utiliser le -m drapeau pour fournir le message d'étiquette sur la ligne de commande). L'utilisation d'une balise annotée crée un objet avec son propre ID, date, tagger (auteur) et éventuellement une signature GPG (en utilisant le -s marque). Pour plus d'informations à ce sujet, voir ce post

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

Et pour lister les balises avec des annotations, utilisez le -n1 drapeau pour afficher 1 ligne de chaque message de tag (-n245 pour afficher les 245 premières lignes de chaque annotation, et ainsi de suite):

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

Pour plus d'informations, voir git-tag (1) Page du manuel


47
2017-11-27 14:25



Exemple de workflow avec GIT.

Git est extrêmement flexible et s'adapte bien à n'importe quel flux de travail, mais ne pas appliquer un flux de travail particulier pourrait avoir un effet négatif sur la compréhension de ce que vous pouvez faire avec git au-delà du workflow linéaire de sauvegarde. .

Ce article de blog explique gentiment un workflow très simple mais efficace qui est vraiment facile à configurer en utilisant git.

citant du blog: Nous considérons que origin / master est 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 assez populaire pour avoir fait un projet qui implémente ce flux de travail: git-flow 

Belle illustration d'un workflow simple, où vous faites tous vos changements en développement, et ne faites que pousser à maîtriser lorsque le code est dans un état de production:

simple workflow

Supposons maintenant que vous souhaitiez travailler sur une nouvelle fonctionnalité ou sur la refonte d'un module. Vous pourriez créer une nouvelle branche, ce que nous pourrions appeler une branche "feature", quelque chose qui prendra du temps et pourrait casser du code. Une fois que votre fonctionnalité est "assez stable" et que vous souhaitez la rapprocher de la production, vous fusionnez votre branche de fonctionnalité pour la développer. Lorsque tous les bogues sont triés après la fusion et que votre code passe tous les tests, vous poussez vos changements dans le maître.

Pendant tout ce processus, vous trouvez un bug de sécurité terrible, qui doit être réparé tout de suite. Vous pouvez avoir une branche appelée hotfixes, qui effectue des modifications qui sont repoussées plus rapidement dans la production que la branche "develop" normale.

Vous avez ici une illustration de ce à quoi pourrait ressembler cette fonction / hotfix / develop / workflow de production (bien expliqué dans le blog, et je le répète, le post de blog explique l'ensemble du processus avec beaucoup plus de détails et beaucoup mieux que moi .

Git workflow example


46
2017-11-26 01:20



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

Git n'est pas dur

23 novembre 2008

Quand nous disons aux gens pourquoi ils devraient   utiliser Git sur Subversion, le go-to   line est, "Git fait mieux Subversion   que Subversion, mais ça fait beaucoup   plus que ça."

Le "beaucoup plus" est composé d'un groupe   de trucs qui font briller Git,   mais il peut être assez accablant pour   ceux provenant d'autres SCM comme   Subversion.

Cela dit, il n'y a rien d'arrêt   vous d'utiliser Git comme vous utilisez   Subversion pendant que vous faites le   transition.

En supposant que vous avez installé le   logiciel nécessaire et avoir une télécommande   référentiel quelque part, c'est comment vous   saisir le code et pousser votre   change de nouveau avec Subversion:

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

Et comment le feriez-vous dans Git:

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

Une commande de plus pour y arriver   Git. Cette commande supplémentaire a grand   implications, mais aux fins de   ce post, c'est tout ce dont nous parlons   à propos, une commande supplémentaire.

Vous voyez, ce n'est vraiment pas si difficile.

Mettre à jour: Je m'en voudrais de ne pas mentionner aussi que l'équivalent de   mettre à jour votre copie locale dans Subversion   par rapport à Git est svn update et    git pull, respectivement. Seulement un   commande dans les deux cas.


39
2018-05-03 08:56



Comment installer Git

Sur Windows:

Installer msysgit

Il y a plusieurs téléchargements:

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

Cela installe également un shell Cygwin bash, de sorte que vous pouvez utiliser le git dans un shell plus agréable (que cmd.exe), et comprend également git-gui (accessible via git guicommande, ou le Start > All Programs > Git menu)

Mac OS X

Utilisez le git-osx-installerou vous pouvez également installer à partir de la source

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 peut être trouvé dans la section "devel"

De la source (Mac OS X / Linux / BSD / etc.)

Sous Mac OS X, si les outils de développement sont installés, vous pouvez compiler Git à partir de la source très facilement. Télécharger la dernière version de Git en tant que .tar.bz ou .tar.gz de http://git-scm.com/et extrayez-le (double-cliquez dans le Finder)

Sur Linux / BSD / etc. ça devrait être pareil. Par exemple, dans Debian (et Ubuntu), vous devez installer le build-essential paquet via apt.

Puis dans un terminal, cd à l'endroit où vous avez extrait les fichiers cd ~/Downloads/git*/ devrait fonctionner), puis exécutez ..

./configure && make && sudo make install

Cela installera Git à l'emplacement par défaut (/usr/local - alors git sera en /usr/local/bin/git)

Il vous demandera d'entrer votre mot de passe (pour sudo), c'est ainsi qu'il peut écrire au /usr/local/ répertoire, qui ne peut être accessible que par l'utilisateur "root" donc sudo est requis!

Si vous voulez l'installer quelque part séparément (les fichiers de Git ne sont pas mélangés avec d'autres outils), utilisez --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 ne pas avoir à taper 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 accès sudo, vous pouvez utiliser --prefix=/Users/myusername/bin et installez dans votre répertoire personnel. N'oubliez pas d'ajouter ~/bin/ à $PATH

Le script x-git-update-to-latest-version automatise beaucoup de ceci:

Ce script met à jour mon clone local du repo git (localy at ~/work/track/git), puis configure, installe (à /usr/local/git-git describe) et met à jour /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 annuaire.


33
2017-08-29 01:33



Git Reset

Dites que vous faites un pull, fusionnez-le dans votre code, et décidez que vous ne l'aimez pas. Utilisez git-log, ou tig, et trouvez le hash où vous voulez revenir (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 Chef comme un raccourci pour le commit précédent.

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

32
2017-11-25 01:02



Comment configurez-vous un référentiel d'équipe partagé?

Comment mettre en place un Ordinaire référentiel est décrit ici - mais comment mettre en place un référentiel d'équipe que tout le monde peut tirer et pousser de et vers?

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

En supposant que votre équipe a déjà par exemple un abonnement de groupe partagé qui peut être utilisé.

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 cloner ceci et commencer à travailler:

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

Utiliser SSH

Configurez un compte d'utilisateur sur le serveur cible. Si vous utilisez un compte sans mot de passe, un compte avec un mot de passe, ou utilisez authorized_keys dépend vraiment de votre niveau de sécurité requis. Jeter un coup d'œil à Configuration de Git sur SSH pour plus d'informations.

Si tous les développeurs utilisent le même compte pour accéder à ce référentiel partagé, vous n'avez pas besoin d'utiliser le --shared option comme ci-dessus.

Après avoir initié le dépôt de la même manière que ci-dessus, vous faites le push initial comme ceci:

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

Voir la similitude avec ce qui précède? La seule chose qui pourrait arriver en plus est SSH demandant un mot de passe si le compte a un mot de passe. Si vous obtenez cette invite sur un compte sans mot de passe, le serveur SSH a probablement été désactivé PermitEmptyPasswords.

Le clonage ressemble maintenant à ceci:

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

31
2018-05-03 09:08