programing

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

golfzon 2023. 4. 19. 23:44
반응형

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

내가 약면면면면이 N에서 어떻게 해야 합니다.N-3커??

커밋 해시를 사용하여 브랜치를 만듭니다.

git branch branch_name <commit-hash>

또는 기호 참조를 사용하여 다음을 수행합니다.

git branch branch_name HEAD~3

브런치를 작성하는 동안 브런치를 체크 아웃하려면 다음 명령을 사용합니다.

git checkout -b branch_name <commit-hash or HEAD~3>

github.com에서 이를 수행하려면:

  1. 프로젝트로 이동합니다.
  2. Commits(커밋)를 클릭합니다.
  3. 분기하는 커밋에서 <<고객명>(이력의 이 시점에서 저장소를 참조합니다)을 클릭합니다.
  4. 트리: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx바 바로 에 ' 찾기 거기에 새 됩니다)라는이전 커밋에서 분기

마법은 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 커밋은 모두 새로운 브랜치에만 있고 이전 작업 브랜치(마스터)에는 없습니다.

어떤 커밋에서 브랜치하고 싶은지 모르는 경우는, 다음의 순서로 커밋을 체크 아웃 해, 그 코드를 조사할 수 있습니다(소스, 컴파일, 테스트 참조).

git checkout <sha1-of-commit>

브런치하고 싶은 커밋을 발견하면 통상적인 방법으로 브런치를 작성하는 것만으로 커밋 내에서(마스터에게 먼저 돌아가지 않고) 실행할 수 있습니다.

git checkout -b <branch_name>

간단히 실행:

git checkout -b branch-name <commit>

예를 들어 다음과 같습니다.

git checkout -b import/january-2019 1d0fa4fa9ea961182114b63976482e634a8067b8

checkout가 지정되어 있습니다.-b새로운 브런치를 생성하여 그 브런치로 전환합니다.

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

그러면 다음 명령어 1개로 브런치가 생성됩니다.

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

이 방법은 브런치를 즉시 생성하기 때문에 위의 방법보다 선호합니다(후 추가 푸시 명령 필요 없음).

Using Sourcetree | 가장 쉬운 방법.

  • 먼저 새로운 브런치를 만들기 위해 특정 커밋을 수행할 브런치를 체크 아웃합니다.
  • 다음으로 툴바를 보고 [Repository]> [ Branch ... ]를 선택합니다.바로 가기는 Command + Shift + B입니다.
  • 실행할 특정 커밋을 선택합니다.그리고 새로운 브랜치 이름을 붙이고 브랜치를 만듭니다!

여기에 이미지 설명 입력

제가 한 일은 다음과 같습니다.

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★★★★★★ 。

이와 관련된 중요한 질문은 다음과 같습니다. 알 수 있을까요?--helpfilename ?시험해 봅시다.

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

다 했어요.

Github repo에서 빠르게 실행할 수 있는 방법은 다음과 같습니다.

  • 브런치에서 구체적인 커밋을 검색하다
  • SHA ID 옆에 있는 '이력에서 이 시점에서 repo 찾아보기'를 클릭합니다.
  • 이 커밋에서 새 브랜치를 만들 수 있습니다.

아직 아무도 git switch에 대해 말하지 않았나요?

다음 작업을 수행할 수 있습니다.

git checkout <commit-hash>

또는 기호 참조를 사용하여 다음을 수행합니다.

git checkout HEAD~3

그 후:

git switch -c my-new-feature-branch

Eclipse에서 이 작업을 수행하려면

  • "Git Repository Exparing" 관점으로 이동합니다.
  • [태그(Tags)]를 펼쳐 브랜치를 작성할 커밋을 선택합니다.
  • 커밋을 오른쪽 클릭하여 [Create Branch]를 선택합니다.
  • 지점 이름을 지정합니다.

로컬 브런치를 만듭니다.변경을 푸시할 때마다 브랜치는 리모트서버에 푸시 됩니다.

[ Commit ](커밋)

Git GUI 사용자는 모든 이력을 시각화하고(필요에 따라) 분기하고 싶은 커밋을 오른쪽 클릭하여 분기 이름을 입력할 수 있습니다.

지점명 입력

모든 이력을 시각화하다

Stash에서 할 수 있어요.

  1. 커밋을 클릭합니다.
  2. 화면 우측 상단에서 [Tag this commit]을 클릭합니다.
  3. 그런 다음 방금 만든 태그에서 새 분기를 만들 수 있습니다.

이렇게 할 수 있었어요.

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

여기서 skip 값을 입력해야 합니다.0은 최신, 1은 이전, 2는 그 전의 커밋 등입니다.

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은 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 블로그를 읽어보시길 권합니다.

소스 트리 사용 [현재 사용되는 버전: 3.1.3]

  1. 소스 트리에서 이력 열기

소스 트리에서 기록 찾기

  1. 메인 창에 모든 커밋이 나열됩니다.
  2. 원하는 커밋을 오른쪽 클릭하여Branch...선택.
  3. 새 창에서 브랜치 이름을 지정하고Create branch.
  4. 새로운 브런치(시스템 로컬)는 다른 기존 브런치와 함께 좌측에 배치됩니다.이 브런치를 오리진으로 푸시하여 저장소에 가져올 수 있습니다.이렇게 하면 다른 사용자가 사용할 수 있습니다.

명령줄 기반 솔루션을 찾는 경우 내 답변을 무시해도 됩니다.는 당신에게 GitKraken을 사용하라고 제안합니다.뛰어난 GIT UI 클라이언트입니다.홈페이지에는 Git 트리가 표시되어 있습니다.이 프로젝트를 보고 무슨 일이 일어나고 있는지 알 수 있습니다.특정 커밋을 선택하고 마우스 오른쪽 버튼을 클릭한 다음 '여기에 분기 만들기' 옵션을 선택합니다.지점 이름을 입력할 수 있는 텍스트 상자가 나타납니다.지점 이름을 입력하고 '확인'을 선택하면 설정이 완료됩니다.정말 사용하기 쉬워요.

Git Gui(Windows용 GIT)를 사용했습니다.

  1. 메뉴바에서 [분기(Branch)]메뉴를 열고 [작성(Create...)]를 선택합니다.
  2. [ Branch Name ]섹션에서 새 브랜치 이름을 지정합니다.
  3. [ Start Revision ]섹션에서 [Revision Expression:]를 선택하고 커밋 ID를 입력합니다(Visual Studio에서 8자리 ID를 사용했는데 작동했습니다).

[ Create New Branch ]대화창

GitHub Desktop에서는 이력 페인을 표시하고 원하는 커밋을 우클릭한 후 "Create branch from commit" 메뉴 항목을 선택합니다.

소스 트리를 사용하면 매우 간단합니다.

  • 새로운 브런치를 작성해야 하는 곳에서 커밋을 오른쪽 클릭합니다.
  • 분기'를 클릭합니다.
  • 대화상자에 새 분기 이름을 입력하고 '분기 만들기'를 클릭합니다.

언급URL : https://stackoverflow.com/questions/2816715/branch-from-a-previous-commit-using-git

반응형