13 ответов:
вы можете создать ветку через хэш:
git branch branchname <sha1-of-commit>или с помощью символической ссылки:
git branch branchname HEAD~3чтобы проверить ветку при ее создании, используйте
git checkout -b branchname <sha1-of-commit or HEAD~3>
чтобы сделать это дальше github.com:
- перейти к вашему проекту.
- нажмите на кнопку "совершает".
- нажмите на кнопку ("просмотрите репозиторий на этом этапе истории") в фиксации, из которой вы хотите перейти.
- нажмите на "дерево: xxxxxx" в верхнем левом углу. Чуть ниже панели статистики языка, вы получите возможность "найти или создать ветку" (просто введите новое имя ветки там)
![]()
Если вы не уверены, с какого коммита вы хотите ветвиться заранее, вы можете проверить коммиты и изучить их код (см. source, compile, test) по
git checkout <sha1-of-commit>Как только вы найдете фиксацию, которую вы хотите ветвить, вы можете сделать это из фиксации (т. е. не возвращаясь к мастеру сначала) , просто создав ветку обычным способом:
git checkout -b <branch_name>
магия может быть сделано с помощью git reset.
создать новую ветку и переключиться на нее (так что все ваши последние коммиты хранятся здесь)
git checkout -b your_new_branchвернитесь к предыдущей рабочей ветви (предположим, что это мастер)
git checkout masterудалите последние фиксации x, держите мастер в чистоте
git reset --hard HEAD~x # in your case, x = 3С этого момента, все последние фиксации x находятся только в новой ветви, а не в вашей предыдущей рабочей ветви (master).
вы можете сделать это в заначку.
- Нажмите кнопку фиксации
- в правой верхней части экрана нажмите "пометить эту фиксацию"
- затем вы можете создать новую ветку из тега вы только что создали.
чтобы сделать это в 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.




Comments