wake-up-neo.com

Verzweigen Sie mit Git von einem vorherigen Commit

Wie kann ich vom n-3-Commit abzweigen, wenn ich n Commits habe?

Ich kann den Hash jedes Commits sehen.

1559
dole doug

Sie können den Zweig über einen Hash erstellen:

git branch branchname <sha1-of-commit>

Oder mit einem symbolischen Verweis:

git branch branchname HEAD~3

Verwenden Sie, um den Zweig beim Erstellen auszuchecken

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

Um dies auf github.com zu tun:

  1. Gehen Sie zu Ihrem Projekt.
  2. Klicken Sie auf "Commits".
  3. Klicken Sie auf <> ("Durchsuchen Sie das Repository an dieser Stelle im Verlauf"), um den Commit zu starten, von dem Sie verzweigen möchten.
  4. Klicken Sie oben links auf den "Baum: xxxxxx". Direkt unter der Leiste für die Sprachstatistik erhalten Sie die Option "Zweig suchen oder erstellen" (geben Sie dort einfach einen neuen Zweignamen ein). Branch from previous commit
228
OneSolitaryNoob

Die Magie kann durch git reset erledigt werden.

  1. Erstellen Sie eine neue Filiale und wechseln Sie zu ihr (damit alle Ihre letzten Commits hier gespeichert werden).

    git checkout -b your_new_branch

  2. Wechseln Sie zurück zu Ihrem vorherigen Arbeitszweig (nehmen Sie an, dass es sich um einen Master handelt)

    git checkout master

  3. Entfernen Sie die neuesten x Commits und halten Sie den Master sauber

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

Ab diesem Moment befinden sich alle letzten x Commits nur noch in der neuen Filiale, nicht mehr in Ihrer vorherigen Arbeitsfiliale (Master).

73
Jing Li

Wenn Sie nicht sicher sind, von welchem ​​Commit Sie im Voraus verzweigen möchten, können Sie Commits auschecken und ihren Code (siehe Quelle, Kompilieren, Testen) nach überprüfen

git checkout <sha1-of-commit>

wenn Sie das Commit gefunden haben, von dem Sie verzweigen möchten, können Sie dies aus dem Commit heraus tun (d. h. ohne vorher zum Master zurückzukehren), indem Sie einfach einen Zweig auf die übliche Weise erstellen:

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

Ein schneller Weg, dies auf Ihrem Github-Repo zu tun, wäre folgender:

  • Finden Sie das spezifische Commit in Ihrer Filiale
  • Klicken Sie neben der SHA -ID auf "Repo an diesem Punkt im Verlauf durchsuchen".
  • Hier können Sie einen neuen Zweig aus diesem Commit erstellen enter image description here
9
Vatsal Parekh

Um dies in Eclipse zu tun:

  • Gehen Sie zur Perspektive "Git Repository Exploring".
  • Erweitern Sie "Tags" und wählen Sie das Commit aus, aus dem Sie einen Zweig erstellen möchten.
  • Klicken Sie mit der rechten Maustaste auf das Commit und wählen Sie "Zweig erstellen".
  • Geben Sie einen Filialnamen an.

Es wird eine lokale Niederlassung für Sie erstellt. Wenn Sie dann Ihre Änderungen übertragen, wird Ihre Zweigstelle auf den Remote-Server übertragen.

4
Saurabhcdt

Einfach ausführen:

git checkout -b branch-name <commit>

Beispielsweise :

git checkout -b import/january-2019 1d0fa4fa9ea961182114b63976482e634a8067b8

Der Befehl checkout mit dem Parameter -b erstellt eine neue Verzweigung UND und schaltet Sie darauf um

3
d1jhoni1b

Eine große verwandte Frage ist: Wie zum Teufel findest du das mit der Option --help von git heraus? Lass uns das versuchen:

git branch --help

Wir sehen diese Ausgabe:

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.

Suchen Sie im nachfolgenden Text nach dem Wort "commit". Wir finden das:

   <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.

Wir kommen irgendwohin!

Konzentrieren Sie sich nun auf diese Zeile des Gobbledegooks:

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

Verdichten Sie dies:

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

Und fertig.

3
Purplejacket

Ich konnte es so machen:

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

Wo müssen Sie den Skip-Wert eingeben. 0 ist die letzte, 1 ist die vorherige, 2 ist die Festschreibung davor usw.

3
Mike Graf

Sie können es in Stash tun.

  1. Klicken Sie auf das Commit
  2. Klicken Sie oben rechts auf dem Bildschirm auf "Tag this commit".
  3. Anschließend können Sie den neuen Zweig aus dem soeben erstellten Tag erstellen.
3
David Ruan

Das habe ich gemacht:

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

In diesem Fall war 8a75b001096536b3216022484af3026aa9c7bb5b ein altes Commit, das zum Zweig master gehört.

1
Jaime Montoya

Gehe zu einem bestimmten Commit eines Git-Repositorys

Manchmal möchten Sie bei der Arbeit an einem Git-Repository zu einem bestimmten Zeitpunkt zu einem bestimmten Commit (einer bestimmten Revision) zurückkehren, um einen Schnappschuss Ihres Projekts zu erstellen. Dazu brauchen Sie nur den SHA-1-Hash des Commits, den Sie leicht finden können, indem Sie das Protokoll mit dem folgenden Befehl überprüfen:

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

dadurch erhalten Sie eine kompakte Liste aller Commits und die Kurzversion des SHA-1-Hashs.

Nachdem Sie den Hash des Commits kennen, zu dem Sie gehen möchten, können Sie einen der folgenden 2 Befehle verwenden:

git checkout HASH

oder

git reset --hard HASH

Kasse

git checkout <commit> <paths>

Weist git an, den aktuellen Status von Pfaden durch den Status im angegebenen Commit zu ersetzen. Pfade können Dateien oder Verzeichnisse sein.

Wenn keine Verzweigung angegeben ist, nimmt git das Commit HEAD an.

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

Wenn kein Pfad angegeben ist, bewegt Git HEAD zum angegebenen Commit (wodurch das Commit geändert wird, an dem Sie gerade sitzen und arbeiten).

git checkout branch //means switching branches.

reset

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

Wenn Sie sich in einem Zweig befinden (dies sollte normalerweise der Fall sein), werden HEAD und dieser Zweig zum Festschreiben verschoben.

Wenn Sie sich im getrennten Zustand HEAD befinden, wird beim Zurücksetzen des Git nur HEAD verschoben. Um einen Zweig zurückzusetzen, checken Sie ihn zuerst aus.

Wenn Sie mehr über den Unterschied zwischen dem Zurücksetzen von Git und dem Auschecken von Git erfahren möchten, würde ich empfehlen, den offiziellen Git-Blog zu lesen.

1
Lyes CHIOUKH

Select Commit

Für Benutzer der Git-GUI können Sie den gesamten Verlauf anzeigen (falls erforderlich) und dann mit der rechten Maustaste auf das Commit klicken, von dem Sie verzweigen möchten, und den Zweignamen eingeben.

Enter Branch name

Visualize all the history

0
Ivan

wenn Sie den Quelltextbaum verwenden, ist das ziemlich einfach.

  • Klicken Sie mit der rechten Maustaste auf das Commit, von dem aus Sie einen neuen Zweig erstellen möchten
  • Klicken Sie auf "Zweig"
  • Geben Sie den Namen des neuen Zweigs in das erscheinende Dialogfeld ein und klicken Sie auf "Zweig erstellen".
0
Ibtisam Asif

So führen Sie die akzeptierte Antwort in Visual Studio 2015 und 2017 aus:

Click in alterations

Klicken Sie in Änderungen (roter Pfeil oben)

Click Actions to View History

Klicken Sie auf Aktionen (roter Pfeil oben) und klicken Sie im Dropdown-Menü auf Verlauf anzeigen

Und es öffnet sich ein neuer Tab:

History tab

Und Sie sollten mit der rechten Maustaste auf das vorherige Commit klicken, zu dem Ihr Code zurückkehren soll: right click the previous commit

Wählen Sie, um eine neue Filiale und voilá zu überprüfen!

Unten, obwohl nicht Teil der OP-Frage, aber ich mache beides sehr oft und dies ist ein Trickschritt, zumindest für mich: Wenn Sie zu einem vorherigen Commit zurückkehren möchten, ohne einen neuen Zweig auszuchecken, wählen Sie NICHT "Zurück" (! ?); du solltest neu definieren --mixed oder --hard:

right click the previous commit and redefine

0
Marcelo Scofano