web-dev-qa-db-fra.com

Branche d'un commit précédent en utilisant Git

Si j'ai n commits, comment puis-je dériver du commit n-3?

Je peux voir le hash de chaque commit.

1559
dole doug

Vous pouvez créer la branche via un hash:

git branch branchname <sha1-of-commit>

Ou en utilisant une référence symbolique:

git branch branchname HEAD~3

Pour extraire la branche lors de sa création, utilisez

git checkout -b branchname <sha1-of-commit or HEAD~3>
2201
CB Bailey

Pour ce faire sur github.com:

  1. Allez à votre projet.
  2. Cliquez sur les "commits".
  3. Cliquez sur le <> ("Parcourir le référentiel à ce stade de l'historique") dans la validation à partir de laquelle vous souhaitez créer une branche.
  4. Cliquez sur "l'arbre: xxxxxx" en haut à gauche. Juste en dessous de la barre de statistiques linguistiques, vous aurez l'option "Rechercher ou créer une branche" (il suffit de taper un nouveau nom de branche ici) Branch from previous commit
228
OneSolitaryNoob

La magie peut être faite par réinitialisation de git.

  1. Créez une nouvelle branche et basculez-y (pour que tous vos derniers commits soient stockés ici)

    git checkout -b your_new_branch

  2. Revenez à votre branche de travail précédente (supposez que c'est le maître)

    git checkout master

  3. Supprimer les derniers commits x, garder le maître propre

    git reset --hard HEAD~x # in your case, x = 3

À partir de ce moment, tous les derniers x commits ne sont plus que dans la nouvelle branche, pas dans votre branche précédente (maître).

73
Jing Li

Si vous ne savez pas quelle validation vous voulez créer à partir de la branche, vous pouvez vérifier les commits et examiner leur code (voir source, compiler, tester) en

git checkout <sha1-of-commit>

une fois que vous avez trouvé le commit que vous souhaitez créer, vous pouvez le faire depuis le commit (c'est-à-dire sans revenir au maître) en créant simplement une branche de la manière habituelle:

git checkout -b <branch_name>
65
stanm
git checkout -b <branch-name> <sha1-of-commit>
21
Tyler Long

Un moyen rapide de le faire sur votre dépôt Github serait comme suit:

  • Trouvez le commit spécifique de votre branche
  • A côté du SHA id, cliquez sur 'Parcourir le dépôt à ce stade de l'historique'
  • Ici, vous pouvez créer une nouvelle branche à partir de ce commit enter image description here
9
Vatsal Parekh

Pour ce faire dans Eclipse:

  • Allez dans "Perspective du référentiel Git".
  • Développez "Tags" et choisissez le commit à partir duquel vous voulez créer une branche.
  • Faites un clic droit sur le commit et choisissez "Créer une branche".
  • Fournissez un nom de branche.

Cela créera une branche locale pour vous. Ensuite, chaque fois que vous transmettez vos modifications, votre branche sera transmise au serveur distant.

4
Saurabhcdt

Il suffit de lancer:

git checkout -b branch-name <commit>

Par exemple :

git checkout -b import/january-2019 1d0fa4fa9ea961182114b63976482e634a8067b8

La commande checkout avec le paramètre -b créera une nouvelle branche ET et vous y basculera

3
d1jhoni1b

Une bonne question connexe est la suivante: comment voyez-vous cela en utilisant l'option --help de git? Essayons ça:

git branch --help

Nous voyons cette sortie:

NAME
       git-branch - List, create, or delete branches    

SYNOPSIS
       git branch [--color[=<when>] | --no-color] [-r | -a]
               [--list] [-v [--abbrev=<length> | --no-abbrev]]
               [--column[=<options>] | --no-column]
               [(--merged | --no-merged | --contains) [<commit>]] [--sort=<key>]
               [--points-at <object>] [<pattern>...]
       git branch [--set-upstream | --track | --no-track] [-l] [-f] <branchname> [<start-point>]
       git branch (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>]
       git branch --unset-upstream [<branchname>]
       git branch (-m | -M) [<oldbranch>] <newbranch>
       git branch (-d | -D) [-r] <branchname>...
       git branch --edit-description [<branchname>]

Gobbledegook.

Recherchez dans le texte suivant le mot "commit". Nous trouvons ceci:

   <start-point>
       The new branch head will point to this commit. It may be given as a branch name, a
       commit-id, or a tag. If this option is omitted, the current HEAD will be used instead.

Nous allons quelque part!

Maintenant, concentrez-vous sur cette ligne du gobbledegook:

git branch [--set-upstream | --track | --no-track] [-l] [-f] <branchname> [<start-point>]

Condense cela à ceci:

git branch <branchname> [<start-point>]

Et fait.

3
Purplejacket

J'ai pu le faire comme ça:

git branch new_branch_name `git log -n 1 --skip 3 --format=%H`

Où vous devez entrer la valeur de saut. 0 est le dernier, 1 le précédent, 2 le commit avant ça, etc.

3
Mike Graf

Vous pouvez le faire en Stash.

  1. Cliquez sur le commit
  2. En haut à droite de l'écran, cliquez sur "Marquer cette validation".
  3. Ensuite, vous pouvez créer la nouvelle branche à partir de la balise que vous venez de créer.
3
David Ruan

C'est ce que j'ai fait:

C:\Users\[path]\build>git checkout -b responsivenavigation 8a75b001096536b3216022484af3026aa9c7bb5b
Switched to a new branch 'responsivenavigation'

C:\Users\jaimemontoya\Dropbox\CuponClub\androidapp\build>git branch
  master
* responsivenavigation

Dans ce cas, 8a75b001096536b3216022484af3026aa9c7bb5b était et un ancien commit appartenant à la branche master.

1
Jaime Montoya

Aller à un commit particulier d'un dépôt git

Parfois, lorsque vous travaillez sur un référentiel git, vous souhaitez revenir à une validation (révision) spécifique pour obtenir un instantané de votre projet à une heure spécifique. Pour ce faire, vous avez besoin du hachage SHA-1 du commit que vous pouvez facilement trouver en consultant le journal avec la commande:

git log --abbrev-commit --pretty=oneline

qui vous donnera une liste compacte de tous les commits et de la version courte du hachage SHA-1.

Maintenant que vous connaissez le hash du commit que vous voulez aller, vous pouvez utiliser l'une des 2 commandes suivantes:

git checkout HASH

ou

git reset --hard HASH

caisse

git checkout <commit> <paths>

Indique à git de remplacer l'état actuel des chemins par leur état dans le commit donné. Les chemins peuvent être des fichiers ou des répertoires.

Si aucune branche n'est donnée, git suppose le commit HEAD.

git checkout <path> // restores path from your last commit. It is a 'filesystem-undo'.

Si aucun chemin n'est donné, git déplace HEAD vers le commit donné (modifiant ainsi le commit sur lequel vous êtes assis et sur lequel vous travaillez).

git checkout branch //means switching branches.

réinitialiser

git reset <commit> //re-sets the current pointer to the given commit.

Si vous êtes sur une branche (vous devriez normalement l'être), HEAD et cette branche sont déplacés vers commit.

Si vous êtes dans l'état HEAD détaché, la réinitialisation de git ne déplace que HEAD. Pour réinitialiser une branche, commencez par la vérifier.

Si vous voulez en savoir plus sur la différence entre la réinitialisation de git et la caisse de git, je vous recommande de lire le blog officiel de git .

1
Lyes CHIOUKH

Select Commit

Pour les utilisateurs de l'interface graphique Git, vous pouvez visualiser tout l'historique (si nécessaire), cliquer avec le bouton droit de la souris sur le commit à partir duquel vous souhaitez créer une branche et entrer le nom de la branche.

Enter Branch name

Visualize all the history

0
Ivan

si vous utilisez l’arbre source, c’est assez simple.

  • Cliquez avec le bouton droit sur le commit à partir duquel vous devez créer une nouvelle branche.
  • Cliquez sur 'branche'
  • Entrez le nom de la nouvelle branche dans la boîte de dialogue, puis cliquez sur "Créer une branche".
0
Ibtisam Asif

Pour faire la réponse acceptée dans Visual Studio 2015 & 2017:

Click in alterations

Cliquez sur les modifications (flèche rouge ci-dessus)

Click Actions to View History

Cliquez sur Actions (flèche rouge ci-dessus), puis sur Afficher l'historique dans le menu déroulant.

Et le nouvel onglet s'ouvrira:

History tab

Et vous devez cliquer avec le bouton droit sur le commit précédent auquel vous voulez que votre code revienne: right click the previous commit

Choisissez de commander une nouvelle branche et voila!

Ci-dessous, bien que ne faisant pas partie de la question OP, mais je fais beaucoup de choses à la fois et celle-ci est une astuce, du moins pour moi: si vous voulez revenir à un commit précédent, sans passer par une nouvelle branche, NE PAS choisir de revenir (! ?); vous devriez choisir redéfinir --mixed ou --hard:

right click the previous commit and redefine

0
Marcelo Scofano