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에서 이를 수행하려면:
- 프로젝트로 이동합니다.
- Commits(커밋)를 클릭합니다.
- 분기하는 커밋에서 <<고객명>(이력의 이 시점에서 저장소를 참조합니다)을 클릭합니다.
- 트리: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx바 바로 에 ' 찾기 거기에 새 됩니다)라는

마법은 git reset으로 할 수 있습니다.
새로운 브런치를 생성하여 브런치로 전환합니다(최신 커밋이 모두 여기에 저장됩니다).
git checkout -b your_new_branch이전 영업 지점으로 되돌아가다(마스터라고 가정)
git checkout master최신 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]를 선택합니다.
- 지점 이름을 지정합니다.
로컬 브런치를 만듭니다.변경을 푸시할 때마다 브랜치는 리모트서버에 푸시 됩니다.
Git GUI 사용자는 모든 이력을 시각화하고(필요에 따라) 분기하고 싶은 커밋을 오른쪽 클릭하여 분기 이름을 입력할 수 있습니다.
Stash에서 할 수 있어요.
- 커밋을 클릭합니다.
- 화면 우측 상단에서 [Tag this commit]을 클릭합니다.
- 그런 다음 방금 만든 태그에서 새 분기를 만들 수 있습니다.
이렇게 할 수 있었어요.
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]
- 소스 트리에서 이력 열기
- 메인 창에 모든 커밋이 나열됩니다.
- 원하는 커밋을 오른쪽 클릭하여
Branch...선택. - 새 창에서 브랜치 이름을 지정하고
Create branch. - 새로운 브런치(시스템 로컬)는 다른 기존 브런치와 함께 좌측에 배치됩니다.이 브런치를 오리진으로 푸시하여 저장소에 가져올 수 있습니다.이렇게 하면 다른 사용자가 사용할 수 있습니다.
명령줄 기반 솔루션을 찾는 경우 내 답변을 무시해도 됩니다.저는 당신에게 GitKraken을 사용하라고 제안합니다.뛰어난 GIT UI 클라이언트입니다.홈페이지에는 Git 트리가 표시되어 있습니다.이 프로젝트를 보고 무슨 일이 일어나고 있는지 알 수 있습니다.특정 커밋을 선택하고 마우스 오른쪽 버튼을 클릭한 다음 '여기에 분기 만들기' 옵션을 선택합니다.지점 이름을 입력할 수 있는 텍스트 상자가 나타납니다.지점 이름을 입력하고 '확인'을 선택하면 설정이 완료됩니다.정말 사용하기 쉬워요.
Git Gui(Windows용 GIT)를 사용했습니다.
- 메뉴바에서 [분기(Branch)]메뉴를 열고 [작성(Create...)]를 선택합니다.
- [ Branch Name ]섹션에서 새 브랜치 이름을 지정합니다.
- [ Start Revision ]섹션에서 [Revision Expression:]를 선택하고 커밋 ID를 입력합니다(Visual Studio에서 8자리 ID를 사용했는데 작동했습니다).
GitHub Desktop에서는 이력 페인을 표시하고 원하는 커밋을 우클릭한 후 "Create branch from commit" 메뉴 항목을 선택합니다.
소스 트리를 사용하면 매우 간단합니다.
- 새로운 브런치를 작성해야 하는 곳에서 커밋을 오른쪽 클릭합니다.
- 분기'를 클릭합니다.
- 대화상자에 새 분기 이름을 입력하고 '분기 만들기'를 클릭합니다.
언급URL : https://stackoverflow.com/questions/2816715/branch-from-a-previous-commit-using-git
'programing' 카테고리의 다른 글
| #정의 WIN32_LEAN_AND_MEAN은 정확히 무엇을 제외합니까? (0) | 2023.04.19 |
|---|---|
| .gitignore for Visual Studio 프로젝트 및 솔루션 (0) | 2023.04.19 |
| C#에서 Excel 파일 읽기 (0) | 2023.04.19 |
| Java POI : 계산식이 아닌 Excel 셀 값을 읽는 방법 (0) | 2023.04.19 |
| Windows에 GRP와 같은 패턴 매칭 유틸리티가 있나요? (0) | 2023.04.19 |

](https://i.stack.imgur.com/m9oKm.png)



![[ Create New Branch ]대화창](https://i.stack.imgur.com/HWQWQ.png)