79 votes

quel est l'équivalent Git des commandes TFS entre les tablettes / unshelve? cherry-pick?

J'ai trouvé que l'étagère/unshelve commandes dans TFS sont très pratique et très simple à utiliser. Ce qui est l'équivalent du dépôt Git ?

voici le scénario dans TFS :

  • J'ai fait des modifications dans le coffre
  • J'en suspens : le jeu de modification est enregistrée sur le serveur (avec une étiquette) et je reçois la source remonte avant les modifications
  • Je travaille dans le coffre
  • Quelqu'un peut unshelve : obtenir le changement de son espace de travail

Je sais qu'il y a un appel à la commande cherry-pick mais je ne suis pas sûr de la charge de travail et si elle correspond à la nécessité.

85voto

Jefromi Points 127932

Ce que vous décrivez est similaire à git stash , à la différence près qu'avec git vous avez votre propre référentiel (pas seulement un seul sur un serveur), vous seul pouvez récupérer cette modification.

L'idée générale est:

 # do some stuff
vim foo/bar.c
# stash away your changes
git stash

# do some other things...

# retrieve your changes
git stash pop
 

Si vous souhaitez que quelqu'un d'autre ait accès à cet ensemble de modifications, vous souhaitez plutôt le valider dans une branche active:

 # make yourself a branch
git checkout -b temp-featureA
# commit to it
git add foo/bar.c; git commit

# now you push this branch (or they could just fetch straight from you)
git push origin temp-featureA


# Now, in someone else's repo:
# Fetch updates
git fetch origin
# Make a branch tracking the remote branch
git branch temp-featureA origin/temp-featureA

# Either check it out:
git checkout temp-featureA
# or cherry-pick it, to apply the changes somewhere else:
git cherry-pick temp-featureA
# or, if it's multiple commits, rebase it!
git rebase --onto my-branch start-of-featureA temp-featureA
 

30voto

Neall Points 12075

J'ai fait des recherches TFS étagère/unshelve, et ce que vous voulez faire est accompli par le bon vieux ramification dans git.

À partir de une belle StackOverflow réponse par JaredPar:

Le rayonnage est une façon d'enregistrer toutes les modifications sur votre boîte sans vérifier dans. Les modifications sont conservées sur le serveur.

C'est l'analogue de s'engager à une branche et en le poussant vers un serveur git.

Je suppose que la ramification dans TFS est difficile? (Ou pourquoi auraient-ils un moyen de vérifier le code "sans contrôle?) Dans Git, il est rapide, facile et amusant.

Comment le faire:

Disons que vous travaillez sur le "maître" de la branche et que vous décidez de mettre en œuvre la fonctionnalité X. Vous obtenez un bon début, mais ensuite, votre patron vous dit que la caractéristique Y les besoins mis en œuvre dès que possible. Phil dans le prochain cube de plus de bénévoles pour terminer fonction de X alors que vous n'fonction de Y. Voici ce que vous devez faire:

Créer une nouvelle branche et basculer vers elle:

$ git checkout -b feature-x

Valider vos modifications:

$ git add filethatyouchanged.cc
$ git commit -m 'partial implementation of feature X'

De les transmettre à un serveur que Phil pouvez le voir:

$ git push origin feature-x

Revenir à la branche master (qui n'a pas changé):

$ git checkout master

Vous souhaitez peut-être également de manière proactive créer une nouvelle branche pour fonction de Y:

$ git checkout -b feature-y

Phil pouvez maintenant tirer vers le bas de votre fonction de X de travail et de reprendre là où vous l'avez laissé:

phil$ git fetch origin
phil$ git checkout -t origin/feature-x

5voto

VonC Points 414372

git stash est un peu similaire, sauf que c'est limité à votre arbre de travail.

Dans un DVCS, pour réaliser ce genre de travail, vous devez:

  • validez vos changements en cours dans une nouvelle branche
  • la caisse de l'origine de la branche où vous pouvez aller sur avec aucun des changements que vous avait présenté (mais engagé dans la nouvelle branche)
  • pousser la nouvelle branche à un strict repo
  • permettre à un autre développeur pour tirer cette branche nouvelle et de les intégrer à sa branche courante.

Une autre façon serait de laisser l'autre développeur chercher votre branche (où vous avez commis cet ensemble spécial de l'évolution), et cherry-pick-il, mais ce n'est pas recommandé, pour y chercher les commits sont difficiles à suivre.

1voto

Paddy Points 16834

Vous recherchez la commande stash, je pense. Référence

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