etc./StackOverFlow

Git을 사용하여 이전 커밋에서 분기

청렴결백한 만능 재주꾼 2021. 11. 30. 23:59
반응형

질문자 :dole doug


n 커밋이 있는 경우 n-3 커밋에서 어떻게 분기할 수 있습니까?

모든 커밋의 해시를 볼 수 있습니다.



해시를 통해 분기를 만들 수 있습니다.

 git branch branchname <sha1-of-commit>

또는 기호 참조를 사용하여:

 git branch branchname HEAD~3

브랜치를 생성할 때 체크아웃하려면 다음을 사용하십시오.

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

CB Bailey

github.com에서 이 작업을 수행하려면:

  1. 프로젝트로 이동합니다.
  2. "커밋"을 클릭하십시오.
  3. 분기하려는 커밋에서 <> ("기록의 이 시점에서 저장소 찾아보기")를 클릭합니다.
  4. 왼쪽 상단에 있는 "트리: xxxxxx"를 클릭합니다. 언어 통계 표시줄 바로 아래에 "분기 찾기 또는 만들기" 옵션이 표시됩니다(여기에 새 분기 이름을 입력하기만 하면 됩니다). 이전 커밋에서 분기

OneSolitaryNoob

마법은 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 커밋은 더 이상 이전 작업 분기(마스터)가 아닌 새 분기에만 있습니다.


Jing Li

분기할 커밋이 무엇인지 미리 확실하지 않은 경우 다음을 통해 커밋을 확인하고 해당 코드를 검사할 수 있습니다(소스, 컴파일, 테스트 참조).

 git checkout <sha1-of-commit>

분기하려는 커밋을 찾으면 일반적인 방식으로 분기를 생성하여 커밋 내에서(즉, 먼저 마스터로 돌아가지 않고) 수행할 수 있습니다.

 git checkout -b <branch_name>

stanm

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

Tyler Long

다음을 실행하기만 하면 됩니다.

 git checkout -b branch-name <commit>

예를 들어 :

 git checkout -b import/january-2019 1d0fa4fa9ea961182114b63976482e634a8067b8

checkout 매개 변수와 명령 -b 새로운 지점을 생성하고 그것을 당신을 전환됩니다


d1jhoni1b

훌륭한 관련 질문은 다음과 같습니다. --help 옵션을 사용하여 이것을 어떻게 알아낼 수 있습니까? 이것을 시도해보자:

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

그리고 완료.


Purplejacket

이렇게 하면 하나의 명령으로 분기가 생성됩니다.

 git push origin <sha1-of-commit>:refs/heads/<branch-name>

나는 즉시 분기를 생성하기 때문에 위에 게시된 방법보다 이 방법을 더 선호합니다(나중에 추가 푸시 명령이 필요하지 않음).


Alexander Samoylov

Github 리포지토리에서 빠르게 수행하는 방법은 다음과 같습니다.

  • 지점에서 특정 커밋 찾기
  • SHA ID 옆에 있는 '기록의 이 시점에서 리포지토리 찾아보기'를 클릭합니다.
  • 여기이 커밋에서 새 분기를 만들 수 있습니다. 여기에 이미지 설명 입력

Vatsal Parekh

소스트리 사용하기 | 가장 쉬운 방법.

  • 먼저 새 분기를 만들기 위해 특정 커밋을 수행하려는 분기를 체크아웃합니다.
  • 그런 다음 도구 모음에서 저장소 > 분기를 선택합니다. 바로 가기는 Command + Shift + B입니다.
  • 그리고 수행하려는 특정 커밋을 선택합니다. 그리고 새로운 브랜치 이름을 부여하고 브랜치를 생성하세요!

여기에 이미지 설명 입력


Pengguna

Eclipse에서 이 작업을 수행하려면 다음을 수행합니다.

  • "Git Repository Exploring" 관점으로 이동합니다.
  • "태그"를 확장하고 브랜치를 생성할 커밋을 선택합니다.
  • 커밋을 마우스 오른쪽 버튼으로 클릭하고 "브랜치 생성"을 선택합니다.
  • 지점 이름을 제공합니다.

그것은 당신을 위해 로컬 지점을 만들 것입니다. 그런 다음 변경 사항을 푸시할 때마다 분기가 원격 서버로 푸시됩니다.


Saurabhcdt

Stash에서 할 수 있습니다.

  1. 커밋을 클릭
  2. 화면 오른쪽 상단에서 "이 커밋에 태그 지정"을 클릭합니다.
  3. 그런 다음 방금 만든 태그에서 새 분기를 만들 수 있습니다.

David Ruan

나는 다음과 같이 할 수 있었다.

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

건너뛰기 값을 입력해야 하는 위치입니다. 0은 최신, 1은 이전, 2는 그 이전 커밋 등입니다.


Mike Graf

이것이 내가 한 일입니다.

 C:\Users\[path]\build>git checkout -b responsivenavigation 8a75b001096536b3216022484af3026aa9c7bb5b Switched to a new branch 'responsivenavigation' C:\Users\jaimemontoya\[path]\app>git branch master * responsivenavigation

이 경우 8a75b001096536b3216022484af3026aa9c7bb5b master 브랜치에 속한 이전 커밋입니다.


Jaime Montoya

git 저장소의 특정 커밋으로 이동

때때로 git 리포지토리에서 작업할 때 특정 시간에 프로젝트의 스냅샷을 갖기 위해 특정 커밋(개정)으로 돌아가고 싶을 때가 있습니다. 그렇게 하려면 다음 명령으로 로그를 확인하는 것을 쉽게 찾을 수 있는 커밋의 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 블로그 를 읽는 것이 좋습니다.


L Y E S - C H I O U K H

커밋 선택

Git GUI 사용자의 경우 필요한 경우 모든 기록을 시각화한 다음 분기하려는 커밋을 마우스 오른쪽 버튼으로 클릭하고 분기 이름을 입력할 수 있습니다.

지점명 입력

모든 역사를 시각화


Ivan

꽤 직관적인 소스 트리를 사용한다면.

  • 새 분기를 생성해야 하는 곳에서 커밋을 마우스 오른쪽 버튼으로 클릭합니다.
  • '지점' 클릭
  • 대화 상자에 새 분기의 이름을 입력하고 '분기 만들기'를 클릭합니다.

Ibtisam Asif

명령줄 기반 솔루션을 찾고 있다면 내 대답을 무시해도 됩니다. GitKraken 을 사용하는 것이 좋습니다. 특별한 git UI 클라이언트입니다. 홈페이지에 Git 트리를 보여줍니다. 당신은 단지 그들을보고 프로젝트에 무슨 일이 일어나고 있는지 알 수 있습니다. 특정 커밋을 선택하고 마우스 오른쪽 버튼으로 클릭한 다음 '여기에 분기 만들기' 옵션을 선택하기만 하면 됩니다. 브랜치 이름을 입력할 수 있는 텍스트 상자가 표시됩니다. 지점 이름을 입력하고 '확인'을 선택하면 설정됩니다. 사용하기 정말 쉽습니다.


shamiul97

출처 : http:www.stackoverflow.com/questions/2816715/branch-from-a-previous-commit-using-git

반응형