Antworten:
Sie können den Zweig über einen Hash erstellen:
git branch branchname <sha1-of-commit>
Oder unter Verwendung einer symbolischen Referenz:
git branch branchname HEAD~3
Verwenden Sie zum Auschecken des Zweigs beim Erstellen
git checkout -b branchname <sha1-of-commit or HEAD~3>
git push origin BRANCH_NAME
<sha1-of-commit>
run zu starten , git checkout -b <name-of-branch> <sha1-of-commit>
aber wenn der Zweig bereits existiertgit checkout -B <name-of-branch> <sha1-of-commit>
Um dies auf github.com zu tun:
Die Magie kann durch Git-Reset erfolgen .
Erstellen Sie einen neuen Zweig und wechseln Sie zu diesem (damit alle Ihre neuesten Commits hier gespeichert werden).
git checkout -b your_new_branch
Wechseln Sie zurück zu Ihrem vorherigen Arbeitszweig (nehmen Sie an, dass es sich um einen Master handelt).
git checkout master
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 neuesten x-Commits nur noch in der neuen Verzweigung, nicht mehr in Ihrer vorherigen Arbeitsniederlassung (Master).
git reset --hard
keine gute Idee ist, wenn Sie das Commit bereits auf Ursprung gebracht haben ...
git push --force
wenn Sie die Niederlassung bereits zuvor geschoben hatten
Wenn Sie sich nicht sicher sind, von welchem Commit Sie im Voraus verzweigen möchten, können Sie Commits auschecken und ihren Code (siehe Quelle, Kompilieren, Testen) von überprüfen
git checkout <sha1-of-commit>
Sobald Sie das Commit gefunden haben, von dem Sie verzweigen möchten, können Sie dies innerhalb des Commits tun (dh ohne zuerst zum Master zurückzukehren), indem Sie einfach eine Verzweigung auf die übliche Weise erstellen:
git checkout -b <branch_name>
git checkout -b <branch-name> <sha1-of-commit>
git branch branchname <sha1-of-commit>
" (von der akzeptierten Antwort)?
git checkout -b
, um einen neuen Zweig zu erstellen.
Ein schneller Weg, dies auf Ihrem Github-Repo zu tun, wäre wie folgt:
Einfach ausführen:
git checkout -b branch-name <commit>
Beispielsweise :
git checkout -b import/january-2019 1d0fa4fa9ea961182114b63976482e634a8067b8
Der checkout
Befehl mit dem Parameter -b
erstellt einen neuen Zweig UND schaltet Sie darauf um
git fetch
& git branch
command im Ordner Ihres Projekts über das Terminal aus und überprüfen Sie, ob der Feature-Zweig vorhanden ist. Wenn dies der Fall ist, können Sie natürlich keinen Zweig aus gelöschten Zweigen erstellen. Sie können auch einen Zweig löschen, falls der Zweig ist weg
Eine gute verwandte Frage ist: Wie zum Teufel finden Sie das mit der --help
Option 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.
Durchsuchen Sie den nachfolgenden Text nach dem Wort "Festschreiben". 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 das dazu:
git branch <branchname> [<start-point>]
Und fertig.
So tun Sie dies in Eclipse:
Es wird eine lokale Niederlassung für Sie erstellt. Wenn Sie dann Ihre Änderungen übertragen, wird Ihr Zweig auf den Remote-Server übertragen.
Sie können es in Stash tun.
Ich konnte es so machen:
git branch new_branch_name `git log -n 1 --skip 3 --format=%H`
Hier müssen Sie den Sprungwert eingeben. 0 ist die letzte, 1 ist die vorherige, 2 ist das Commit davor usw.
HEAD~1
(wobei 1 1 Commit Back angibt)?
Dadurch wird der Zweig mit einem Befehl erstellt:
git push origin <sha1-of-commit>:refs/heads/<branch-name>
Ich bevorzuge diesen Weg besser als die oben veröffentlichten, da er den Zweig sofort erstellt (erfordert danach keinen zusätzlichen Push-Befehl).
Verwenden von Sourcetree | Der einfachste Weg.
Das habe ich getan:
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 8a75b001096536b3216022484af3026aa9c7bb5b
gehörte ein altes Commit zur master
Filiale.
Wechseln Sie zu einem bestimmten Commit eines Git-Repositorys
Wenn Sie an einem Git-Repository arbeiten, möchten Sie manchmal zu einem bestimmten Commit (Revision) zurückkehren, um zu einem bestimmten Zeitpunkt einen Snapshot Ihres Projekts zu erhalten. Um dies alles zu tun, benötigen Sie 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-Hash.
Nachdem Sie den Hash des Commits kennen, zu dem Sie wechseln möchten, können Sie einen der folgenden 2 Befehle verwenden:
git checkout HASH
oder
git reset --hard HASH
Auschecken
git checkout <commit> <paths>
Weist git an, den aktuellen Status von Pfaden durch ihren Status im angegebenen Commit zu ersetzen. Pfade können Dateien oder Verzeichnisse sein.
Wenn kein Zweig angegeben ist, übernimmt git das HEAD-Commit.
git checkout <path> // restores path from your last commit. It is a 'filesystem-undo'.
Wenn kein Pfad angegeben ist, bewegt sich git HEAD
zum angegebenen Commit (wodurch das Commit geändert wird, an dem Sie sitzen und arbeiten).
git checkout branch //means switching branches.
zurücksetzen
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) HEAD
und dieser Zweig zum Festschreiben verschoben wird.
Wenn Sie sich in einem getrennten HEAD
Zustand befinden, wird der Git-Reset nur verschoben HEAD
. Um einen Zweig zurückzusetzen, checken Sie ihn zuerst aus.
Wenn Sie mehr über den Unterschied zwischen Git-Reset und Git-Checkout erfahren möchten, würde ich empfehlen, den offiziellen Git-Blog zu lesen .
git log --abbrev-commit --pretty=oneline
kann abgekürzt werdengit log --oneline
Für Git-GUI-Benutzer können Sie den gesamten Verlauf (falls erforderlich) visualisieren und dann mit der rechten Maustaste auf das Commit klicken, von dem Sie verzweigen möchten, und den Verzweigungsnamen eingeben.
So führen Sie die akzeptierte Antwort in Visual Studio 2015 und 2017 aus:
Klicken Sie auf Änderungen (roter Pfeil oben)
Klicken Sie auf Aktionen (roter Pfeil oben) und dann im DropDown-Menü auf Verlauf anzeigen
Und der neue Tab wird geöffnet:
Und Sie sollten mit der rechten Maustaste auf das vorherige Commit klicken, auf das Ihr Code zurückgesetzt werden soll:
Wählen Sie eine neue Filiale und voilá!
Unten, obwohl nicht Teil der OP-Frage, aber ich mache viel und dieser 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ücksetzen (! ?); Sie sollten --mixed oder --hard neu definieren:
Wenn Sie den Quellbaum verwenden, ist das ziemlich einfach.
Wenn Sie nach einer befehlszeilenbasierten Lösung suchen, können Sie meine Antwort ignorieren. Ich werde Ihnen vorschlagen, GitKraken zu verwenden . Es ist ein außergewöhnlicher Git-UI-Client. Es zeigt den Git-Baum auf der Homepage. Sie können sie sich einfach ansehen und wissen, was mit dem Projekt los ist. Wählen Sie einfach ein bestimmtes Commit aus, klicken Sie mit der rechten Maustaste darauf und wählen Sie die Option "Hier einen Zweig erstellen". Sie erhalten ein Textfeld zur Eingabe des Filialnamens. Geben Sie den Filialnamen ein, wählen Sie 'OK' und Sie sind fertig. Es ist wirklich sehr einfach zu bedienen.