Respostas:
Você pode criar a ramificação por meio de um hash:
git branch branchname <sha1-of-commit>
Ou usando uma referência simbólica:
git branch branchname HEAD~3
Para fazer o checkout da ramificação ao criá-la, use
git checkout -b branchname <sha1-of-commit or HEAD~3>
git push origin BRANCH_NAME
<sha1-of-commit>
corrida git checkout -b <name-of-branch> <sha1-of-commit>
, mas se o ramo já existegit checkout -B <name-of-branch> <sha1-of-commit>
Para fazer isso no github.com:
A mágica pode ser feita pelo git reset .
Crie uma nova ramificação e mude para ela (para que todas as suas confirmações mais recentes sejam armazenadas aqui)
git checkout -b your_new_branch
Volte para o seu ramo de trabalho anterior (suponha que seja mestre)
git checkout master
Remova os x commits mais recentes, mantenha o mestre limpo
git reset --hard HEAD~x # in your case, x = 3
A partir deste momento, todos os x commits mais recentes estão apenas na nova ramificação, e não na sua ramificação anterior (mestre).
git reset --hard
não é uma boa idéia se você já empurrou a comprometer-se a origem ...
git push --force
se você já tinha empurrado o ramo antes #
Se você não tiver certeza de qual confirmação você deseja ramificar antecipadamente, poderá verificar as confirmações e examinar o código delas (consulte fonte, compilação, teste)
git checkout <sha1-of-commit>
Depois de encontrar o commit que você deseja ramificar, você pode fazer isso dentro do commit (ou seja, sem voltar ao mestre primeiro) apenas criando um branch da maneira usual:
git checkout -b <branch_name>
git checkout -b <branch-name> <sha1-of-commit>
git branch branchname <sha1-of-commit>
" (da resposta aceita)?
git checkout -b
para criar um novo ramo.
Uma maneira rápida de fazer isso no seu repositório do Github seria a seguinte:
Basta executar:
git checkout -b branch-name <commit>
Por exemplo :
git checkout -b import/january-2019 1d0fa4fa9ea961182114b63976482e634a8067b8
O checkout
comando com o parâmetro -b
criará uma nova ramificação E passará para você
git fetch
& git branch
command na pasta do seu projeto usando o terminal e verifique se o ramo de recurso existe; se esse for o caso, sim, é claro que você não poderá criar um ramo a partir de ramos excluídos, também poderá reverter uma exclusão de ramo, caso o O ramo se foi #
Uma ótima pergunta relacionada é: como diabos você descobre isso usando a --help
opção git? Vamos tentar isso:
git branch --help
Vemos esta saída:
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.
Pesquise no texto subsequente a palavra "confirmar". Encontramos o seguinte:
<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.
Estamos chegando a algum lugar!
Agora, concentre-se nesta linha do gobbledegook:
git branch [--set-upstream | --track | --no-track] [-l] [-f] <branchname> [<start-point>]
Condense isso a isso:
git branch <branchname> [<start-point>]
E feito.
Para fazer isso no Eclipse:
Ele criará uma filial local para você. Então, sempre que você enviar suas alterações, sua filial será enviada para o servidor remoto.
Você pode fazer isso no Stash.
Consegui fazer assim:
git branch new_branch_name `git log -n 1 --skip 3 --format=%H`
Onde você deve inserir o valor de ignorar. 0 é o mais recente, 1 é o anterior, 2 é o commit antes disso, etc.
HEAD~1
(onde 1 especifica 1 confirmação)?
Isso cria o ramo com um comando:
git push origin <sha1-of-commit>:refs/heads/<branch-name>
Prefiro esse caminho melhor do que os publicados acima, porque ele cria a ramificação imediatamente (não requer um comando de envio extra posteriormente).
Usando Sourcetree | O jeito mais fácil.
Isto é o que eu fiz:
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
Nesse caso, 8a75b001096536b3216022484af3026aa9c7bb5b
was e old commit pertencem ao master
ramo.
Vá para um commit específico de um repositório git
Às vezes, ao trabalhar em um repositório git, você deseja voltar para um commit específico (revisão) para obter uma captura instantânea do seu projeto em um horário específico. Para fazer tudo isso, é necessário o hash SHA-1 da confirmação, que você pode encontrar facilmente verificando o log com o comando:
git log --abbrev-commit --pretty=oneline
que fornecerá uma lista compacta de todos os commits e a versão curta do hash SHA-1.
Agora que você conhece o hash do commit que deseja acessar, pode usar um dos 2 comandos a seguir:
git checkout HASH
ou
git reset --hard HASH
Verificação de saída
git checkout <commit> <paths>
Diz ao git para substituir o estado atual dos caminhos pelo estado no commit fornecido. Os caminhos podem ser arquivos ou diretórios.
Se nenhum ramo for fornecido, o git assumirá o commit HEAD.
git checkout <path> // restores path from your last commit. It is a 'filesystem-undo'.
Se nenhum caminho for especificado, o git se moverá HEAD
para o commit fornecido (alterando o commit no qual você está sentado e trabalhando).
git checkout branch //means switching branches.
Redefinir
git reset <commit> //re-sets the current pointer to the given commit.
Se você estiver em uma ramificação (normalmente deveria), HEAD
e essa ramificação será movida para confirmação.
Se você estiver no HEAD
estado desconectado , o git reset será movido apenas HEAD
. Para redefinir uma ramificação, verifique primeiro.
Se você quiser saber mais sobre a diferença entre git reset e git checkout, recomendo a leitura do blog oficial do git .
git log --abbrev-commit --pretty=oneline
pode ser abreviado paragit log --oneline
Para usuários da GUI do Git, é possível visualizar todo o histórico (se necessário) e clicar com o botão direito do mouse no commit do qual você deseja ramificar e inserir o nome do ramo.
Para fazer a resposta aceita no Visual Studio 2015 e 2017:
Clique nas alterações (seta vermelha acima)
Clique em Ações (seta vermelha acima) e clique em Exibir histórico no menu suspenso
E uma nova guia será aberta:
E você deve clicar com o botão direito do mouse no commit anterior ao qual deseja que seu código seja revertido:
Escolha fazer check-out de uma nova agência e pronto!
Abaixo, embora não faça parte da pergunta do OP, mas faço muito e este é um passo complicado, pelo menos para mim: se você deseja reverter para um commit anterior, sem fazer checkout de um novo branch, NÃO escolha reverter (! ?); você deve redefinir --mixed ou --hard:
se você usar a árvore de origem bastante simples.
Se você está procurando uma solução baseada em linha de comando, pode ignorar minha resposta. Eu vou sugerir que você use o GitKraken . É um cliente de interface do usuário extraordinário git. Ele mostra a árvore Git na página inicial. Você pode apenas olhar para eles e saber o que está acontecendo com o projeto. Basta selecionar um commit específico, clicar com o botão direito do mouse e selecionar a opção 'Criar uma ramificação aqui'. Ele fornecerá uma caixa de texto para inserir o nome da filial. Digite o nome do ramo, selecione 'OK' e você está definido. É realmente muito fácil de usar.