Branche d'un engagement précédent utilisant Git

si j'ai n commits, Comment puis-je me ramifier à partir du N-3 commit?

je peux voir la valeur de hachage de chaque livraison.

1315
demandé sur Peter Mortensen 2010-05-12 11:21:55
la source

13 ответов

vous pouvez créer la branche via un hachage:

git branch branchname <sha1-of-commit>

Ou en utilisant une référence symbolique:

git branch branchname HEAD~3

pour vérifier la branche lors de sa création, utilisez

git checkout -b branchname <sha1-of-commit or HEAD~3>
1832
répondu CB Bailey 2018-06-18 18:37:34
la source

pour ce faire sur github.com:

  1. allez à votre projet.
  2. cliquez sur le bouton"Commits".
  3. cliquez sur le <> ("parcourez le dépôt à ce point de l'histoire") sur la propagation à partir de laquelle vous voulez créer une branche.
  4. , Cliquez sur "arbre: xxxxxx" en haut à gauche. Juste en dessous de la barre de statistiques de langue, vous aurez l'option "Trouver ou créer une branche" (il suffit de taper dans une nouvelle nom de la succursale) Branch from previous commit
181
répondu OneSolitaryNoob 2018-01-25 01:38:47
la source

si vous n'êtes pas sûr de la propagation que vous voulez effectuer à l'avance, vous pouvez vérifier les propagations et examiner leur code (voir source, compiler, tester) par

git checkout <sha1-of-commit>

une fois que vous avez trouvé la propagation, vous pouvez la faire à partir de la propagation (c'est-à-dire sans retourner au maître d'abord) en créant une propagation de la manière habituelle:

git checkout -b <branch_name>
56
répondu stanm 2014-02-10 20:43:35
la source

La magie peut être fait par git reset .

  1. créez une nouvelle branche et passez à elle (ainsi toutes vos dernières propagations sont stockées ici)

    git checkout -b your_new_branch

  2. revenir à votre précédente de travail de la branche (à supposer qu'il est le maître)

    git checkout master

  3. supprimer le dernier x commits, garder le propre

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

à partir de maintenant, tous les derniers x commits ne sont plus que dans la nouvelle branche, et non plus dans votre branche de travail précédente (master).

55
répondu Jing Li 2015-08-03 12:04:43
la source
git checkout -b <branch-name> <sha1-of-commit>
17
répondu Tyler Long 2017-07-11 10:11:37
la source

une façon rapide de le faire sur votre GitHub repo serait la suivante:

  • trouver le commit spécifique de votre branche
  • à côté du SHA id, cliquez sur 'Parcourir le repo à ce point de l'histoire'
  • ici vous pouvez créer une nouvelle branche à partir de ce commit enter image description here
7
répondu Vatsal Parekh 2017-01-14 20:51:09
la source

Vous pouvez le faire en Cachette.

  1. Cliquez sur " valider
  2. en haut À droite de l'écran cliquez sur "Tag ce commit"
  3. alors vous pouvez créer la nouvelle branche à partir de l'étiquette que vous venez de créer.
4
répondu David Ruan 2017-01-18 20:20:08
la source

Pour ce faire, dans Eclipse:

  • allez à "Git Repository Exploring" Perspective.
  • Expand "Tags" et choisissez la propagation à partir de laquelle vous voulez créer une branche.
  • faites un clic droit sur le commit et choisissez"Create Branch".
  • inscrire le nom de la succursale.

il va créer une succursale locale pour vous. Puis à chaque fois que vous poussez vos changements, votre branche sera poussée à le serveur distant.

4
répondu Saurabhcdt 2018-01-25 01:37:44
la source

une grande question connexe est: comment diable pouvez-vous comprendre cela en utilisant l'option --help de git? Essayons ceci:

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.

rechercher le mot"commit" dans le texte suivant. 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.

on arrive à quelque chose!

maintenant, concentrez-vous sur cette ligne du livre de gobbled:

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

condensez cela à ceci:

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

et fait.

3
répondu Purplejacket 2016-07-19 19:35:48
la source

j'ai été capable de le faire de la sorte:

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 est le précédent, 2 est le commit avant cela,etc.

3
répondu Mike Graf 2018-01-25 01:36:29
la source

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 ancien commit appartenant à la branche master .

1
répondu Jaime Montoya 2018-06-14 11:23:44
la source

Aller à un particulier de commettre un dépôt git

Parfois, lorsque vous travaillez sur un dépôt git que vous voulez revenir à un commit (révision) pour avoir un aperçu de votre projet à un moment précis. Pour ce faire, vous avez besoin du hachage SHA-1 du commit que vous pouvez facilement trouver en vérifiant le log avec la commande:

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

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

maintenant que vous connaissez le hachage de la propagation, vous pouvez utiliser l'une des 2 commandes suivantes:

git checkout HASH

ou

git reset --hard HASH

"check-out

git checkout <commit> <paths>

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

si aucune branche n'est donnée, git assume la responsabilité principale.

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é (changeant ainsi le commit sur lequel vous êtes assis et sur lequel vous travaillez).

git checkout branch //means switching branches.

reset

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

Si vous êtes sur une branche (vous devez généralement être), HEAD et cette branche est déplacée à commit.

Si vous êtes détaché HEAD de l'état, git reset ne fait que déplacer HEAD . Pour réinitialiser une branche, vérifiez d'abord.

si vous voulez en savoir plus sur la différence entre git reset et git checkout, je vous recommande de lire le blog officiel de git .

0
répondu Lyes CHIOUKH 2018-07-20 18:47:56
la source

Select Commit

pour les utilisateurs de Git GUI, vous pouvez visualiser toute l'histoire (si nécessaire), puis 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
répondu user3070485 2018-08-28 15:04:32
la source

Autres questions sur git branch git-branch