Вопрос: Филиал с предыдущего фиксации с использованием Git


Если у меня есть n коммитов, как я могу отделить от n-3 commit?

Я вижу хэш каждой фиксации.


1240


источник


Ответы:


Вы можете создать ветку через хэш:

git branch branchname <sha1-of-commit>

Или используя символическую ссылку:

git branch branchname HEAD~3

Чтобы проверить ветку при ее создании, используйте

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

1736



Сделать это на github.com:

  1. Перейдите в свой проект.
  2. Нажмите «Записать».
  3. Нажать на <> («Просмотрите репозиторий на этом этапе истории») на фиксации, из которой вы хотите перейти.
  4. Нажмите «дерево: xxxxxx» вверху слева вверху. Как раз под панелью статистики языка вы получите опцию «Найти или создать ветвь» (просто введите там новое название ветки) Branch from previous commit

171



Если вы не знаете, с какой фиксацией вы хотите вступить в секцию заранее, вы можете проверить фиксацию и проверить их код (см. Источник, скомпилировать, проверить) на

git checkout <sha1-of-commit>

как только вы найдете фиксацию, которую хотите отделить от нее, вы можете сделать это изнутри фиксации (т. е. не возвращаясь к первому мастеру), просто создав ветвь обычным способом:

git checkout -b <branch_name>

52



Магия может быть выполнена сброс git ,

  1. Создайте новую ветку и переключитесь на нее (так что все ваши последние коммиты хранятся здесь)

    git checkout -b your_new_branch

  2. Вернитесь к своей предыдущей рабочей ветке (предположим, что это мастер)

    git checkout master

  3. Удалите последние х фиксации, держите мастер чистым

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

С этого момента все последние х совершаются только в новой ветке, а не в вашей предыдущей рабочей ветке (мастер).


48



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

14



Быстрый способ сделать это в вашем реестре Github будет следующим:

  • Найти конкретную фиксацию из вашей ветки
  • Помимо идентификатора SHA, нажмите «Обзор репо на этом этапе истории»,
  • Здесь вы можете создать новую ветку из этой фиксации enter image description here

5



You can do it in Stash.

  1. Click the commit
  2. On the right top of the screen click "Tag this commit"
  3. Then you can create the new branch from the tag you just created.

3



To do this in Eclipse:

  • Go to "Git Repository Exploring" Perspective.
  • Expand "Tags" and choose the commit from which you want to create branch.
  • Right click on the commit and choose "Create Branch".
  • Provide a branch name.

It will create a local branch for you. Then whenever you push your changes, your branch will be pushed to the remote server.


3



A great related question is: How the heck do you figure this out using the --help option of git? Let's try this:

git branch --help

We see this output:

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.

Search through the subsequent text for the word "commit". We find this:

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

We're getting somewhere!

Now, focus on this line of the gobbledegook:

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

Condense that to this:

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

And done.


2