Voici toutes les commandes Git que j'ai utilisées la semaine dernière et ce qu'elles font.

Comme la plupart des débutants, j'ai commencé par rechercher des commandes Git dans StackOverflow, puis j'ai copié-collé des réponses, sans vraiment comprendre ce qu'elles faisaient.

Je me souviens avoir pensé,"Ne serait-ce pas bien s'il y avait une liste des commandes Git les plus courantes avec une explication de leur utilité?"

Eh bien, je suis ici des années plus tard pour compiler une telle liste et exposer quelques bonnes pratiques que même les développeurs intermédiaires avancés devraient trouver utiles.

Pour garder les choses pratiques, je baser cette liste sur les commandes Git que j'ai utilisées au cours de la semaine dernière.

Presque tous les développeurs utilisent Git, et très probablement GitHub. Mais le développeur moyen n'utilise probablement ces trois commandes que 99% du temps:

git add --allgit commit -am ""git push origin master

C'est bien beau lorsque vous travaillez sur une équipe composée d'une seule personne, un hackathon ou une application jetable, mais lorsque la stabilité et la maintenance commencent à devenir une priorité, nettoyer les engagements, s'en tenir à une stratégie de branchement et écrire des messages de validation cohérents deviennent importants.

Je vais commencer par la liste des commandes couramment utilisées pour permettre aux débutants de comprendre plus facilement ce qui est possible avec Git, puis passer aux fonctionnalités les plus avancées et aux meilleures pratiques.

Commandes régulièrement utilisées

Pour initialiser Git dans un référentiel (repo), il vous suffit de taper la commande suivante. Si vous n'initialisez pas Git, vous ne pouvez exécuter aucune autre commande Git dans ce dépôt.

git init

Si vous utilisez GitHub et que vous transmettez du code à un dépôt GitHub stocké en ligne, vous utilisez un dépôt distant . Le nom par défaut (également appelé alias) de ce dépôt distant est origin . Si vous avez copié un projet depuis Github, il a déjà une origine . Vous pouvez afficher cette origine avec la commande git remote -v , qui listera l'URL du dépôt distant.

Si vous avez initialisé votre propre référentiel Git et souhaitez l'associer à un référentiel GitHub, vous devrez en créer un sur GitHub, copier l'URL fournie et utiliser la commande git remote add originRL>, avec l'URL fournie par GitHub remplaçant «». À partir de là, vous pouvez ajouter, valider et pousser vers votre dépôt distant.

Le dernier est utilisé lorsque vous devez modifier le référentiel distant. Supposons que vous ayez copié un dépôt de quelqu'un d'autre et que vous souhaitiez changer le dépôt distant du propriétaire d'origine vers votre propre compte GitHub. Suivez le même processus que git remote add origin , mais utilisez plutôt set-url pour changer le dépôt distant.

git remote -vgit remote add origin git remote set-url origin 

Le moyen le plus courant de copier un dépôt consiste à utiliser git clone, suivi de l'URL du dépôt.

Gardez à l'esprit que le référentiel distant sera lié au compte à partir duquel vous avez cloné le référentiel. Donc, si vous avez cloné un dépôt qui appartient à quelqu'un d'autre, vous ne pourrez pas pousser vers GitHub tant que vous n'aurez pas modifié l' origine à l'aide des commandes ci-dessus.

git clone 

Vous vous retrouverez rapidement à utiliser des branches. Si vous ne comprenez pas ce que sont les branches, il existe d'autres didacticiels beaucoup plus approfondis et vous devriez les lire avant de continuer (en voici un).

La commande git branch répertorie toutes les branches sur votre machine locale. Si vous souhaitez créer une nouvelle branche, vous pouvez utiliser git branchme>, avec & lt; nom> représentant le nom de la branche, par exemple «maître».

Le checkout gitLa commande me> bascule vers une branche existante. Vous pouvez également utiliser la commande git checkout -b & lt; nom> pour créer une nouvelle branche et y basculer immédiatement. La plupart des gens l'utilisent au lieu de commandes de branche et d'extraction séparées.

git branchgit branch git checkout git checkout -b 

Si vous avez fait un tas de changements à une branche, Appelons - le « développer », et que vous voulez fusionner cette branche de retour dans votre maître branche, vous utilisez la fusion git

commande ch>. Vous ne devrez pas vérifier la branche master, le n run git merge d evelop pour fusionner develop dans la branche master.

git merge 

Si vous travaillez avec plusieurs personnes, vous vous retrouverez dans une position où un dépôt a été mis à jour sur GitHub, mais vous ne disposez pas des modifications localement. Si tel est le cas, vous pouvez utiliser git pull origin

ch> pour extraire les modifications les plus récentes de cette branche distante.

git pull origin 

Si vous êtes curieux de voir quels fichiers ont été modifiés et ce qui est suivi, vous pouvez utiliser git status . Si vous voulez voir combien chaque fichier a été modifié, vous pouvez utiliser git diff pour voir le nombre de lignes modifiées dans chaque fichier.

git statusgit diff --stat

Commandes avancées et bonnes pratiques

Bientôt, vous atteignez un point où vous voulez que vos engagements soient beaux et cohérents. Vous devrez peut-être également manipuler votre historique de commit pour rendre vos commits plus faciles à comprendre ou pour annuler un changement de rupture accidentel.

La commande git log vous permet de voir l'historique des validations. Vous voudrez l'utiliser pour voir l'historique de vos commits.

Vos validations seront accompagnées de messages et d'un hachage , qui est une série aléatoire de chiffres et de lettres. Un exemple de hachage pourrait ressembler à ceci: c3d882aa1aa4e3d5f18b3890132670fbeac912f7

git log

Disons que vous avez poussé quelque chose qui a cassé votre application. Plutôt que de le réparer et de pousser quelque chose de nouveau, vous préférez revenir en arrière et réessayer.

Si vous voulez revenir en arrière dans le temps et la caisse de votre application à partir d' une commettras précédente, vous pouvez le faire directement en utilisant le hachage comme le nom de la branche. Cela détachera votre application de la version actuelle (car vous modifiez un enregistrement historique, plutôt que la version actuelle).

git checkout c3d88eaa1aa4e4d5f

Ensuite, si vous apportez des modifications à partir de cette branche historique et que vous voulez pousser à nouveau, vous devrez faire une poussée forcée.

Attention: force de pousseris dangerous and should only be done if you absolutely must. It will overwrite the history of your app and you will lose whatever came after.

git push -f origin master

Other times it’s just not practical to keep everything in one commit. Perhaps you want to save your progress before trying something potentially risky, or perhaps you made a mistake and want to spare yourself the embarrassment of having an error in your version history. For that, we have git rebase.

Let’s say you have 4 commits in your local history (not pushed to GitHub) in which you’ve gone back and forth. Your commits look sloppy and indecisive. You can use rebase to combine all of those commits into a single, concise commit.

git rebase -i HEAD~4

The above command will open up your computer’s default editor (which is Vim unless you’ve set it to something else), with several options for how you can change your commits. It will look something like the code below:

pick 130deo9 oldest commit messagepick 4209fei second oldest commit messagepick 4390gne third oldest commit messagepick bmo0dne newest commit message

In order to combine these, we need to change the “pick” option to “fixup” (as the documentation below the code says) to meld the commits and discard the commit messages. Note that in vim, you need to press “a” or “i” to be able to edit the text, and to save and exit, you need to type the escape key followed by “shift + z + z”. Don’t ask me why, it just is.

pick 130deo9 oldest commit messagefixup 4209fei second oldest commit messagefixup 4390gne third oldest commit messagefixup bmo0dne newest commit message

This will merge all of your commits into the commit with the message “oldest commit message”.

The next step is to rename your commit message. This is entirely a matter of opinion, but so long as you follow a consistent pattern, anything you do is fine. I recommend using the commit guidelines put out by Google for Angular.js.

In order to change the commit message, use the amend flag.

git commit --amend

This will also open vim, and the text editing and saving rules are the same as above. To give an example of a good commit message, here’s one following the rules from the guideline:

feat: add stripe checkout button to payments page
- add stripe checkout button- write tests for checkout

One advantage to keeping with the types listed in the guideline is that it makes writing change logs easier. You can also include information in the footer (again, specified in the guideline) that references issues.

Note: you should avoid rebasing and squashing your commits if you are collaborating on a project, and have code pushed to GitHub. If you start changing version history under people’s noses, you could end up making everyone’s lives more difficult with bugs that are difficult to track.

There are an almost endless number of possible commands with Git, but these commands are probably the only ones you’ll need to know for your first few years of programming.

Sam Corcos is the lead developer and co-founder of Sightline Maps, the most intuitive platform for 3D printing topographical maps, as well as LearnPhoenix.io, an intermediate-advanced tutorial site for building scalable production apps with Phoenix and React.

Original text