Если у меня есть n коммитов, как я могу перейти с n-3 коммита?
Я вижу хэш каждого коммита.
git
branch
git-branch
Dole Doug
источник
источник
git push origin BRANCH_NAME
<sha1-of-commit>
прогона,git checkout -b <name-of-branch> <sha1-of-commit>
но если ветка уже существуетgit checkout -B <name-of-branch> <sha1-of-commit>
Для этого на github.com:
источник
Волшебство может быть сделано путем сброса git .
Создайте новую ветку и переключитесь на нее (чтобы все ваши последние коммиты хранились здесь)
git checkout -b your_new_branch
Вернитесь к своей предыдущей рабочей ветке (предположите, что это мастер)
git checkout master
Удалите последние х коммиты, держите мастера в чистоте
git reset --hard HEAD~x # in your case, x = 3
С этого момента все последние x коммиты находятся только в новой ветке, а не в вашей предыдущей рабочей ветке (master).
источник
git reset --hard
не очень хорошая идея, если вы уже выдвинули коммит на источник ...git push --force
если вы уже нажали на ветку раньшеЕсли вы не уверены, с какого коммита вы хотите разветвляться заранее, вы можете проверить коммиты и изучить их код (см. Источник, компиляция, тестирование)
как только вы найдете коммит, от которого вы хотите разветвиться, вы можете сделать это из коммита (то есть, не возвращаясь сначала к мастеру), просто создав ветку обычным способом:
источник
источник
git branch branchname <sha1-of-commit>
" (от принятого ответа)?git checkout -b
чтобы создать новую ветку.Быстрый способ сделать это на вашем репозитории Github будет следующим:
источник
Просто запустите:
Например :
Команда
checkout
с параметром-b
создаст новую ветку и переключит вас на нееисточник
git fetch
&git branch
команду на папке вашего проекта с помощью терминала, затем проверьте, существует ли ветвь функции, если это так, то да, конечно, вы не сможете создать ветку из удаленных ветвей, вы также можете отменить удаление ветки в случае, если ветка ушлаБольшой связанный вопрос: Как, черт возьми, вы можете понять это, используя
--help
опцию git? Давайте попробуем это:Мы видим этот вывод:
Gobbledegook.
Поиск в последующем тексте по слову "совершить". Мы находим это:
Мы куда-то добираемся!
Теперь сфокусируйтесь на этой строчке гобледека:
Конденсировать это к этому:
И сделано.
источник
Для этого в Eclipse:
Это создаст для вас местный филиал. Затем, когда вы отправляете изменения, ваша ветвь будет отправлена на удаленный сервер.
источник
Вы можете сделать это в Stash.
источник
Я смог сделать это так:
Где вы должны ввести значение пропуска. 0 - последний, 1 - предыдущий, 2 - коммит до этого и т. Д.
источник
HEAD~1
(где 1 указывает 1 коммит обратно)?Это создает ветку одной командой:
Я предпочитаю этот способ лучше, чем опубликованные выше, потому что он сразу создает ветку (не требует дополнительной команды push потом).
источник
Используя Sourcetree | Самый простой способ.
источник
Вот что я сделал:
В этом случае
8a75b001096536b3216022484af3026aa9c7bb5b
был и старый коммит, принадлежащий кmaster
ветке.источник
Перейти к определенному коммиту из git-репозитория
Иногда при работе с git-репозиторием вы хотите вернуться к определенной фиксации (ревизии), чтобы получить снимок вашего проекта в определенное время. Для этого вам понадобится хэш SHA-1 коммита, который вы легко найдете, проверив журнал командой:
который даст вам компактный список всех коммитов и короткую версию хэша SHA-1.
Теперь, когда вы знаете хеш коммита, на который хотите перейти, вы можете использовать одну из следующих 2 команд:
или
проверять, выписываться
git checkout <commit> <paths>
Говорит git заменить текущее состояние путей на их состояние в данном коммите. Пути могут быть файлами или каталогами.
Если ветка не указана, git принимает коммит HEAD.
Если путь не указан, git перемещается
HEAD
к данному коммиту (тем самым изменяя коммит, над которым вы сидите и работаете)сброс
Если вы находитесь на ветке (как правило, так
HEAD
и должно быть), и эта ветка перемещается для фиксации.Если вы находитесь в отключенном
HEAD
состоянии, git reset только перемещаетсяHEAD
. Чтобы сбросить ветку, сначала проверьте это.Если вы хотите узнать больше о разнице между git reset и git checkout, я бы порекомендовал прочитать официальный блог git .
источник
git log --abbrev-commit --pretty=oneline
может быть сокращено доgit log --oneline
Для пользователей Git GUI вы можете визуализировать всю историю (при необходимости), а затем щелкнуть правой кнопкой мыши на коммите, с которого вы хотите разветвиться, и ввести имя ветки.
источник
Чтобы сделать принятый ответ в Visual Studio 2015 & 2017:
Нажмите на изменения (красная стрелка выше)
Нажмите «Действия» (красная стрелка вверху) и выберите «Просмотреть историю» в меню DropDown.
И новая вкладка откроется:
И вы должны щелкнуть правой кнопкой мыши предыдущий коммит, к которому вы хотите вернуть свой код:
Выберите, чтобы оформить заказ на новую ветку и вуаля!
Ниже, хотя это и не часть вопроса OP, но я делаю и то, и другое, и этот шаг для меня, по крайней мере, для меня: если вы хотите вернуться к предыдущему коммиту, без проверки новой ветки, НЕ выбирайте revert (! ?); Вы должны выбрать переопределить --mixed или --hard:
источник
если вы используете исходное дерево, это довольно просто.
источник
Если вы ищете решение на основе командной строки, вы можете проигнорировать мой ответ. Я собираюсь предложить вам использовать GitKraken . Это необычный пользовательский интерфейс Git. Это показывает дерево Git на главной странице. Вы можете просто посмотреть на них и узнать, что происходит с проектом. Просто выберите определенный коммит, щелкните его правой кнопкой мыши и выберите опцию «Создать ветку здесь». Это даст вам текстовое поле для ввода названия филиала. Введите название филиала, выберите «ОК» и все готово. Это действительно очень легко использовать.
источник