211 votes

Ce que git fonctionnalités peuvent m'aider à être plus productif?

Qui git fonctions ou astuces, ou même les flux de travail vous permettent d'être productif?

S'il vous plaît poster une caractéristique, le truc, ou le flux de travail par réponse.

183voto

Peter Burns Points 17420

git traversent,

Dans un projet C je travaillais récemment, l'un de nos tests de régression a commencé à échouer. Le projet a été dans un entre-deux, alors j'ai pensé que quelque chose était tout simplement temporairement rompu, et que nous avons rempli les choses en il serait probablement passer à nouveau.

Un bon nombre de validations ont passé et les choses ont commencé à se réunir, mais ce vieux test a été toujours à la peine. Clairement quelqu'un avait en effet introduit un bug le long de la ligne, plutôt que de simplement l'introduction d'un trou temporaire dans la fonctionnalité.

Donc, je lance git bisect start, alors git bisect bad sur le expérimentales tête du référentiel. Puis je saute en arrière sur trente s'engage à en trouver un où le test passe, et je gère git bisect good. git alors saute moi pour une livraison mi-chemin entre le connu le bien et le mauvais connus s'engage, je lance le test et de le faire git bisect good ou git bisect bad. Répétez ce processus environ cinq fois et je suis droit à la validation d'où le bug a été introduit.

J'avais fait un assez innocent semblant casting d'un pointeur, ce qui vissé vers le haut de certains de l'arithmétique des pointeurs, puisque vous êtes si curieux.

Dans l'ensemble, il a pris juste un couple de minutes. Cependant, il s'avère que j'ai fait ce la façon lente. Depuis que j'ai eu un programme de test qui a retourné 0 en cas de succès et quelque chose d'autre en cas d'échec, j'aurais pu tout simplement git la commande pour le lancer, et il pourrait avoir trouvé le commit en question de secondes. Voir: git coupent exécuter

127voto

Casey Points 19286

Afficher Nom de la Branche dans l'Invite Bash

Bon conseil pour travailler avec git en ligne de commande. Fondamentalement, vous pouvez configurer votre invite Bash pour afficher votre actif git branch, si et seulement si vous êtes à l'intérieur d'un dépôt git. Vous pouvez le faire par la mise à jour de l' PS1 définir ou d'ajouter à la fin de votre .bashrc le fichier.

PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '

Le shell va maintenant afficher l'invite suivante:

[user@host workingdir (master)]$

85voto

Abizern Points 52378

git stash - Idéal pour rapidement de stationnement sur quoi vous travaillez, le passage à une autre branche de travailler sur, et ensuite revenir à ce que vous faisiez. Enregistre de faire un commit (pas que les parasites des commits sont un problème dans git grâce à git rebase -i et en écrasant)

git commit --amend - pour ceux d'entre nous qui ont une terrible habitude de commettre, avant la compilation et de test.

78voto

Wayne Conrad Points 31052

La possibilité de réécrire l'histoire avec "git rebase -i". Une des choses que je l'utilise pour se consacrer mon travail comme une série de petits changements, mais avant de me pousser en amont, purée de tous les changements qui vont ensemble dans un rév.

# (work work work)
$ git commit -a -m'WIP: Refactoring ftp fetcher to make bug fix possible'
# (work work work)
$ git commit -a -m'WIP: Added a test for passive mode bug'
# (work work work)
$ git commit -a -m'Fixed passive mode bug in ftp fetcher'

Maintenant, j'ai trois s'engage à ce que je veux écraser ensemble dans avant de me pousser en amont:

$ git rebase -i HEAD~3

Git apporte mon éditeur avec un fichier qui commence par ces trois lignes:

pick d56cc97 Fixed passive mode receive bug in ftp fetcher
pick 2c9b044 WIP: Added a test for passive mode bug
pick 5d87764 WIP: Refactoring ftp fetcher to make bug fix possible

- Je modifier les deuxième et troisième "ramasser" pour "s" (pour "écraser"), enregistrez le fichier et quittez mon éditeur:

pick d56cc97 Fixed passive mode receive bug in ftp fetcher
s 2c9b044 WIP: Added a test for passive mode bug
s 5d87764 WIP: Refactoring ftp fetcher to make bug fix possible

Git défonce le régime ensemble, puis donne-moi les commentaires

# This is a combination of 3 commits.
# The first commit's message is:
Refactoring ftp fetcher to make bug fix possible

# This is the 2nd commit message:

Added a test for passive mode bug

# This is the 3rd commit message:

Fixed passive mode receive bug in ftp fetcher

Qui-je le remplacer avec:

Fixed passive mode receive bug in ftp fetcher

Et c'est tout.

Avoir cette capacité signifie que je peux commettre quelque temps que je veux un bon "revenir en arrière" point et de ne pas s'inquiéter à propos de "polluer" l'amont de l'arbre avec tous mes peu nerveux s'engage.

55voto

Aristotle Pagaltzis Points 43253

Mon préféré de la fonctionnalité, les mains vers le bas, est l'indice. Depuis ma première surprise à ce sujet calmé et je me suis habitué à elle, je me suis demandé pourquoi quelqu'un voudrait travailler sans ce concept. Le premier égarement sur le comportement de l' git diff en ce qui concerne l'indice transformé en solide conviction.

Souvent, quand je commence à faire une chose en particulier sur une base de code, je n'ai pas une idée claire à l'avant sur ce que je veux faire. Avec git, je viens de commencer à travailler et de voir où le travail me prend. Je peux utiliser git add de progressivement ajouter des choses pour le prochain commit à l'index, que je travaille ou après, et à utiliser git diff pour l'examen qui indicative des changements, je n'ai pas encore évalué.

De cette façon, git me permet de suivre une jolie roue libre, style de travail, tout en me permettant de facilement rendre sous la forme d'une série de petits cohérente patchs une fois que j'ai trouvé logique de le faire. Je n'ai pas besoin de planifier soigneusement et suivre le plan méticuleusement.

Ouais, l'index est une couche supplémentaire d'indirection qui me semble inutile au premier coup d'œil. Ce que j'ai trouvé est qu'à la place il est libératrice.

[Addendum: un an après cette réponse, j'ai écrit À la louange de Git indice sur mon blog, dans lequel j'ai dit au fond la même chose, à la longueur.]

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