Ответвление от предыдущей фиксации с помощью Git



Если у меня есть N коммитов, как я филиал от N-3 до конца?



Я вижу хэш каждого коммита.

676   13  

13 ответов:

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

git branch branchname <sha1-of-commit>

или с помощью символической ссылки:

git branch branchname HEAD~3

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

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

чтобы сделать это дальше github.com:

  1. перейти к вашему проекту.
  2. нажмите на кнопку "совершает".
  3. нажмите на кнопку ("просмотрите репозиторий на этом этапе истории") в фиксации, из которой вы хотите перейти.
  4. нажмите на "дерево: xxxxxx" в верхнем левом углу. Чуть ниже панели статистики языка, вы получите возможность "найти или создать ветку" (просто введите новое имя ветки там) Branch from previous commit

Если вы не уверены, с какого коммита вы хотите ветвиться заранее, вы можете проверить коммиты и изучить их код (см. source, compile, test) по

git checkout <sha1-of-commit>

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

git checkout -b <branch_name>

магия может быть сделано с помощью git reset.

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

    git checkout -b your_new_branch

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

    git checkout master

  3. удалите последние фиксации x, держите мастер в чистоте

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

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

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

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

  • найти конкретную фиксацию из вашей ветви
  • рядом с идентификатором SHA нажмите "Просмотреть РЕПО в этот момент в истории"
  • здесь вы можете создать новую ветку от совершения enter image description here

вы можете сделать это в заначку.

  1. Нажмите кнопку фиксации
  2. в правой верхней части экрана нажмите "пометить эту фиксацию"
  3. затем вы можете создать новую ветку из тега вы только что создали.

чтобы сделать это в Eclipse:

  • перейдите к перспективе "git Repository Exploring".
  • разверните "теги" и выберите фиксацию, из которой вы хотите создать ветку.
  • щелкните правой кнопкой мыши на фиксации и выберите "создать ветку".
  • Укажите имя ветви.

он создаст локальную ветку для вас. Затем, когда вы нажимаете свои изменения, ваша ветвь будет перемещена на удаленный сервер.

большой связанный вопрос: как, черт возьми, вы это понимаете, используя --help вариант git? Давайте попробуем это:

git branch --help

мы видим такой выход:

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

тарабарщина.

поиск по последующему тексту для слова "commit". Мы находим это:

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

мы куда-то идем!

теперь сосредоточьтесь на этой строке gobbledegook:

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

конденсироваться, что это:

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

и сделал.

я смог сделать это так:

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

где необходимо ввести значение пропуска. 0-последний, 1-предыдущий, 2-фиксация перед этим и т. д.

вот что я сделал:

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

В этом случае 8a75b001096536b3216022484af3026aa9c7bb5b был и старый коммит принадлежащий master филиала.

перейти к конкретной фиксации репозитория git

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

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

который даст вам компактный список всех коммитов и короткую версию SHA-1 хэш.

теперь, когда вы знаете хэш коммита, который вы хотите перейти, вы можете использовать одну из следующих 2 команд:

git checkout HASH

или

git reset --hard HASH

оформить заказ

git checkout <commit> <paths>

говорит git, чтобы заменить текущее состояние путей с их состоянием в данной фиксации. Пути могут быть файлами или каталогами.

если ветка не задана, git принимает голову совершать.

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

если путь не указан, git перемещается HEAD к данному коммиту (тем самым изменяя коммит, над которым вы сидите и работаете).

git checkout branch //means switching branches.

сброс

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

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

если вы находитесь в отдельной HEAD состояние, git reset только перемещается HEAD. чтобы сбросить ветку, сначала проверьте ее из.

если вы хотите узнать больше о разнице между git reset и git checkout, я бы рекомендовал прочитать официальный блог git.

Select Commit

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

Enter Branch name

Visualize all the history

Comments

    Ничего не найдено.