답변:
해시를 통해 분기를 만들 수 있습니다.
git branch branchname <sha1-of-commit>
또는 기호 참조를 사용하여 :
git branch branchname HEAD~3
지점을 만들 때 체크 아웃하려면
git checkout -b branchname <sha1-of-commit or HEAD~3>
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 reset 으로 수행 할 수 있습니다 .
새 브랜치를 생성 한 후 전환하십시오 (최신 커밋이 모두 여기에 저장 됨)
git checkout -b your_new_branch
이전 작업 지점으로 다시 전환하십시오 (마스터라고 가정).
git checkout master
최신 x 커밋을 제거하고 마스터를 깨끗하게 유지하십시오.
git reset --hard HEAD~x # in your case, x = 3
지금부터 모든 최신 x 커밋은 더 이상 이전 작업 지점 (마스터)이 아닌 새 지점에만 있습니다.
git reset --hard
이미 커밋을 시작했다면 a는 좋은 생각이 아니라는 것을 잊지 마십시오 ...
git push --force
당신은 이미 분기 이전에 추진 한 경우
git checkout -b <branch-name> <sha1-of-commit>
git branch branchname <sha1-of-commit>
"(허용 된 답변과)와 어떻게 다릅니 까?
git checkout -b
새로운 지점을 만드는 데 사용 합니다.
Github 리포지토리에서이를 수행하는 빠른 방법은 다음과 같습니다.
간단히 실행하십시오 :
git checkout -b branch-name <commit>
예를 들면 다음과 같습니다.
git checkout -b import/january-2019 1d0fa4fa9ea961182114b63976482e634a8067b8
checkout
매개 변수와 명령은 -b
새로운 지점을 만듭니다 및 그것을 당신을 전환됩니다
git fetch
및 git branch
명령을 수행 한 다음 기능 분기가 존재하는지 확인하십시오.이 경우 예라면 물론 삭제 된 분기에서 분기를 작성할 수 없습니다. 분기가 사라졌습니다
큰 관련 질문은 다음과 같습니다. --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.
우리는 어딘가에 도착하고 있습니다!
이제이 고 블럭의 라인에 중점을 두십시오.
git branch [--set-upstream | --track | --no-track] [-l] [-f] <branchname> [<start-point>]
이것을 다음과 같이 고백하십시오.
git branch <branchname> [<start-point>]
그리고 끝났습니다.
Eclipse에서이를 수행하려면 다음을 수행하십시오.
그것은 당신을 위해 지역 지점을 만들 것입니다. 그런 다음 변경 사항을 푸시 할 때마다 지점이 원격 서버로 푸시됩니다.
Stash에서 할 수 있습니다.
나는 그렇게 할 수 있었다 :
git branch new_branch_name `git log -n 1 --skip 3 --format=%H`
건너 뛰기 값을 입력해야하는 위치 0은 최신, 1은 이전, 2는 그 이전의 커밋 등입니다.
HEAD~1
(1은 1 커밋을 지정합니까) 사용하지 않습니까?
하나의 명령으로 분기를 만듭니다.
git push origin <sha1-of-commit>:refs/heads/<branch-name>
나는 분기를 즉시 생성하기 때문에 (앞으로 추가 푸시 명령이 필요하지 않기 때문에) 위에 게시 된 것보다이 방법을 선호합니다.
소스 트리 사용 하기 | 가장 쉬운 방법입니다.
이것이 내가 한 일입니다.
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 저장소에서 작업 할 때 특정 커밋 (개정)으로 돌아가 특정 시간에 프로젝트의 스냅 샷을 만들려고합니다. 이를 위해서는 커밋의 SHA-1 해시가 필요합니다. 커밋의 SHA-1 해시는 다음 명령으로 로그를 쉽게 확인할 수 있습니다.
git log --abbrev-commit --pretty=oneline
모든 커밋과 짧은 버전의 SHA-1 해시에 대한 간단한 목록을 제공합니다.
이제 커밋의 해시를 알고 있으므로 다음 두 명령 중 하나를 사용할 수 있습니다.
git checkout HASH
또는
git reset --hard HASH
점검
git checkout <commit> <paths>
주어진 커밋에서 경로의 현재 상태를 현재 상태로 바꾸도록 git에 지시합니다. 경로는 파일 또는 디렉토리 일 수 있습니다.
분기가 제공되지 않으면 git은 HEAD 커밋을 가정합니다.
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 블로그 를 읽는 것이 좋습니다 .
git log --abbrev-commit --pretty=oneline
약자git log --oneline
Visual Studio 2015 및 2017에서 허용되는 답변을 수행하려면
변경 클릭 (위의 빨간색 화살표)
동작 (위의 빨간색 화살표)을 클릭하고 드롭 다운 메뉴에서 기록보기를 클릭하십시오.
그리고 새로운 탭이 열립니다 :
코드를 되돌릴 이전 커밋을 마우스 오른쪽 버튼으로 클릭해야합니다.
새로운 지점을 체크 아웃하고 선택하십시오!
아래는 OP 질문의 일부는 아니지만 많은 것을 수행 하며이 방법은 적어도 나에게 속임수입니다. 새로운 분기를 체크 아웃하지 않고 이전 커밋으로 되돌리려면 revert (! )); redefine --mixed 또는 --hard를 선택해야합니다.
명령 줄 기반 솔루션을 찾고 있다면 내 대답을 무시해도됩니다. GitKraken 을 사용하는 것이 좋습니다 . 특별한 자식 UI 클라이언트입니다. 홈페이지에 Git 트리가 표시됩니다. 당신은 그들을보고 프로젝트에 무슨 일이 일어나고 있는지 알 수 있습니다. 특정 커밋을 선택하고 마우스 오른쪽 버튼으로 클릭하고 '여기서 분기 만들기'옵션을 선택하십시오. 지점 이름을 입력 할 수있는 텍스트 상자가 나타납니다. 지점 이름을 입력하고 '확인'을 선택하면 설정됩니다. 정말 사용하기 쉽습니다.