Frage Verzweige von einem vorherigen Commit mit Git


Wenn ich n commits habe, wie kann ich vom n-3 commit abzweigen?

Ich kann den Hash jedes Commits sehen.


1270
2018-05-12 07:21


Ursprung


Antworten:


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

git branch branchname <sha1-of-commit>

Oder mit einer symbolischen Referenz:

git branch branchname HEAD~3

Verwenden Sie, um den Zweig beim Erstellen zu überprüfen

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

1775
2018-05-12 07:24



Um dies auf github.com zu tun:

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

176
2017-08-08 22:08



Wenn Sie sich nicht sicher sind, von welchem ​​Commit Sie im Voraus eine Verzweigung vornehmen möchten, können Sie das Commit ausführen und den Code (siehe Quelle, Kompilieren, Testen) nach überprüfen

git checkout <sha1-of-commit>

Sobald Sie das Commit gefunden haben, von dem Sie abzweigen möchten, können Sie das innerhalb des Commits tun (d. h. ohne zuerst zum Master zurückzukehren), indem Sie einfach wie gewohnt einen Zweig erstellen:

git checkout -b <branch_name>

54
2018-02-10 16:43



Die Magie kann durch Git zurückgesetzt.

  1. Erstellen Sie einen neuen Zweig und wechseln Sie zu diesem Zweig (so werden alle Ihre letzten Commits hier gespeichert)

    git checkout -b your_new_branch

  2. Wechsle zurück zu deinem vorherigen Arbeitszweig (gehe davon aus, dass es der Master ist)

    git checkout master

  3. Entferne die letzten x-Commits, behalte den Master sauber

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

Von diesem Moment an sind die neuesten x-Commits nur in der neuen Verzweigung, nicht mehr in Ihrer vorherigen Arbeitsniederlassung (Master).


50
2017-08-03 09:04



git checkout -b <branch-name> <sha1-of-commit>

17
2017-07-11 07:11



Eine schnelle Möglichkeit, dies in Ihrem Github-Repo zu tun, wäre wie folgt:

  • Finden Sie das spezifische Commit von Ihrer Zweigstelle
  • Klicken Sie neben der SHA-ID auf "Durchsuchen Sie den Repo an diesem Punkt in der Geschichte"
  • Hier können Sie einen neuen Zweig von diesem Commit erstellen enter image description here 

6
2018-01-14 17:51



Sie können es in Stash tun.

  1. Klicken Sie auf das Festschreiben
  2. Klicken Sie rechts oben auf dem Bildschirm auf "Tag commit"
  3. Dann können Sie den neuen Zweig aus dem soeben erstellten Tag erstellen.

4
2018-01-18 17:20



Um dies in Eclipse zu tun:

  • Gehe zur Perspektive "Git Repository Exploring".
  • Erweitern Sie "Tags" und wählen Sie das Commit aus, von dem Sie eine Verzweigung erstellen möchten.
  • Klicken Sie mit der rechten Maustaste auf den Commit und wählen Sie "Create Branch".
  • Geben Sie einen Zweignamen ein.

Es wird eine lokale Niederlassung für Sie erstellen. Wenn Sie dann Ihre Änderungen übertragen, wird Ihr Zweig an den Remote-Server gesendet.


4
2018-05-17 12:03



Eine große verwandte Frage ist: Wie zum Teufel denkst du das aus mit der --help Option von Git? 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.

Durchsuche den 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!

Konzentriere dich nun auf diese Linie des Kauderwelschs:

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

Verdichten Sie das zu:

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

Und fertig.


3
2017-07-19 16:35



Ich konnte es so machen:

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

Hier müssen Sie den Wert für den Übersprung eingeben. 0 ist der letzte, 1 ist der vorherige, 2 ist der Commit davor, usw.


3
2018-01-31 21:36