다른 분기에서 Git에 분기 작성
나는 두 개의 지점을 가지고 있습니다: 마스터와 개발.
dev 브랜치에서 "기능 브랜치"를 만들고 싶습니다.
현재 지사 개발 부서에서 다음 작업을 수행하고 있습니다.
git checkout -b myfeature dev
(일부 작업)
git commit -am "blablabla"
git push origin myfeature
하지만 지점을 시각화한 후 다음과 같은 결과를 얻었습니다.
--**master**
------0-----0-----0-----0-----0
------------------------**dev**----**myfeature**
제 말은 지점이 빠르게 합병된 것 같은데 왜 그런지 이해가 안 가요...
내가 뭘 잘못하고 있는 거지?
다른 분기에서 분기하여 기능 분기의 원격 저장소로 다시 밀어넣는 방법은 무엇입니까?
당신이 게시한 링크의 방법이 마음에 든다면 Git Flow를 보세요.
워크플로우를 위해 작성한 스크립트 집합입니다.
하지만 당신의 질문에 답하기 위해:
git checkout -b myFeature dev
MyFeature 분기 off dev를 만듭니다.당신의 일을 하고 나서요.
git commit -am "Your message"
이제 빠른 전달 없이 변경 사항을 개발에 병합합니다.
git checkout dev
git merge --no-ff myFeature
이제 변경사항을 서버에 푸시합니다.
git push origin dev
git push origin myFeature
그리고 당신이 원하는 대로 보게 될 것입니다.
Git의 기존 분기 중 하나에서 새 분기를 작성하려면 옵션을 따르십시오.
먼저 새 분기를 만들 지점으로 변경/체크아웃합니다.예를 들어 다음과 같은 분기가 있는 경우:
- 마스터.
- 데브
- 지점1
따라서 "branch1"이라는 분기 아래에 "subbranch_of_b1"이라는 새 분기를 생성하려면 다음 단계를 수행합니다.
체크아웃 또는 "지점1"로 변경
git checkout branch1
이제 다음 명령을 사용하여 "branch1" 아래에 "subbranch_of_b1"이라는 새 분기를 만듭니다.
git checkout -b subbranch_of_b1 branch1
위의 명령을 실행하면 분기1 아래에 하위 분기_of_b1이라는 새 분기가 생성됩니다(참고:
branch1
위의 명령어는 HEAD가 현재 가리키고 있기 때문에 필수 사항이 아닙니다. 단, 다른 분기에 있는 경우에는 정확하게 지정할 수 있습니다.)이제 서브브런치_of_b1로 작업한 후 로컬 또는 원격으로 서브브런치를 커밋하고 푸시 또는 병합할 수 있습니다.
하위 브랜치_of_b1을 원격으로 푸시:
git push origin subbranch_of_b1
분기 작성
마스터 분기가 체크아웃될 때 분기를 작성합니다.여기서 마스터의 커밋은 사용자가 만든 분기와 동기화됩니다.
git branch branch1
될 때 branch1을 합니다. branch1은 branch입니다. "branch2"와 됩니다.
git branch branch2
분기 체크아웃
git checkout 명령 분기 전환 또는 작업 트리 파일 복원
git checkout branchname
분기 이름 변경
git branch -m branch1 newbranchname
분기 삭제
git branch -d branch-to-delete
git branch -D branch-to-delete
( Marge 상태를 확인하지 않고 강제 삭제)
분기 생성 및 전환
git checkout -b branchname
완전히 포함된 분기
git branch --merged
분기 차이 [gitdiff branch1..branch2 ]
다중선차
git diff master..branch1
한 줄 차이
git diff --color-words branch1..branch2
다른 분기에서 Git에 분기를 만드는 다양한 방법:
이 답변은 질문 자체의 제목(다른 분기에서 Git에 분기 만들기)과 관련하여 기존 답변에 없는 몇 가지 추가적인 통찰력을 추가하지만, 여기서 이미 충분한 답변을 가지고 있는 질문의 더 좁은 세부 사항은 다루지 않습니다.
지금 바로 아래 #1(체크아웃하지 않은 지점에서 새 지점 만들기)을 수행하는 방법을 알아야 했기 때문에 추가합니다. 어떻게 해야 하는지 명확하지 않았고, 구글 검색이 검색 결과 상위로 여기까지 이어졌습니다.제 연구 결과를 여기에 공유하겠습니다.이것은 여기에 있는 다른 답변에 의해 잘 다루어지지 않았습니다.
제가 하는 동안, 저는 또한 가장 일반적인 다른 것도 추가할 것입니다.git branch
아래의 일반 워크플로우에서 사용하는 명령을 참조하십시오.
체크아웃하지 않은 분기에서 새 분기를 작성하려면:
를 작성branch2
branch1
" " " " " " " " (예: " " " " " " ")가 master
체크아웃됨):
git branch branch2 branch1
일반적인 형식은 다음과 같습니다.
git branch <new_branch> [from_branch]
man git branch
는 다음과 같이 표시합니다.가 부르는 을 가내부는것르것.<new_branch>
그들이 부르는 것입니다.<branchname>
그리고 내가 부르는 것.[from_branch]
그들이 부르는 것입니다.[<start-point>]
:
git branch [--track | --no-track] [-l] [-f] <branchname> [<start-point>]
체크아웃한 분기에서 새 분기를 작성하려면 다음을 수행합니다.
git branch new_branch
이 기능은 지점을 심하게 손상시킬 수 있는 작업을 수행하기 전에 기본 재배치, 스퀴싱, 하드 재설정 등을 수행하기 전에 백업을 수행하는 데 매우 유용합니다.
설정:나는 할 것입니다feature_branch1
그리고 나는 20개의 커밋을 하나로 뭉개려고 합니다.git rebase -i master
제가 이 작업을 "실행 취소"하고 싶을 때를 대비하여 먼저 이 지점을 백업해둡시다!난 이 모든 걸...시간이 지나고 매우 도움이 되고 안심이 됩니다. 언제든지 쉽게 백업 지점으로 돌아가서 백업 지점을 다시 시작하여 실수할 경우 다시 시도할 수 있습니다.feature_branch1
프로세스 중:
git branch feature_branch1_BAK_20200814-1320hrs_about_to_squash
그20200814-1320hrs
는 부은형날및짜시간다니입 형식의 및 입니다.YYYYMMDD-HHMMhrs
그래서 그것은 2020년 8월 14일 13시 20분 (오후 1시 20분)이 될 것입니다.이렇게 하면 백업 지점을 삭제할 준비가 될 때까지 쉽게 찾을 수 있습니다.만약 당신이 이것을 하지 않고 당신이 심하게 망친다면, 당신은 사용해야 합니다.git reflog
부서를 망치기 전에 지점을 찾는 것이 훨씬 더 어렵고, 스트레스를 많이 받고, 오류가 발생하기 쉽습니다.
삽입에 대한 사항: 참고사:git checkout
대git switch
- 을 할 수 보편적인 "칼": 일을 할 수 .
git checkout
. - ▁to▁에 대한 새롭고 명령입니다.
git checkout
:git switch
+git restore
.
git switch
최근 Git v2.23에 추가되었습니다.Git로 git --version
로 디자인되었습니다.git checkout
파일을 체크아웃하거나 복원할 수 있는 기능이 아닌 지점만 전환하도록 설계되었습니다.git checkout
할 수 있습니다.자세한 내용은 https://www.git-tower.com/learn/git/commands/git-switch 을 참조하십시오.
참고 항목:깃 스위치가 도입된 후 깃 체크아웃은 여전히 무엇을 합니까? git restore
에서는 의나기 중일제 다공니합를의 중 합니다.git checkout
쪽인가요?git switch
포함하지 않습니다.
둘다요.man git switch
그리고.man git restore
주의:
이 명령은 실험적입니다.행동이 바뀔 수 있습니다.
그러니 언제든지 함께 하세요.git checkout
것 .그것의 행동은 변하지 않을 것 같습니다.
거의 그냥 사용합니다.git checkout
나 자신, 하지만 당신은 사용하는 것을 환영합니다.git switch
)git restore
파일을 복원하거나 "체크아웃"할 수 있습니다.
체크아웃한 분기에서 새 분기를 만들고 체크아웃하려면:
# the standard, "classic" command most people still use; `-b` stands
# for "create 'b'ranch"
git checkout -b new_branch
# the newer, "experimental" command now available as of Git v2.23; `-c` stands
# for "'c'reate branch"
git switch -c new_branch
여기서 무슨 일이 일어나고 있는지 분명히 하기 위해 위의 한 명령은 다음 두 개의 개별 명령과 동일하다는 것을 알아야 합니다.
# classic
git branch new_branch
git checkout new_branch
# OR: new/experimental as of Git v2.23
git branch new_branch
git switch new_branch
체크아웃하지 않은 분기에서 새 분기를 만들고 체크아웃하려면:
# classic
git checkout -b new_branch from_branch
# OR: new/experimental as of Git v2.23
git switch -c new_branch from_branch
여기서 무슨 일이 일어나고 있는지 분명히 하기 위해 위의 하나의 명령은 다음 세 개의 개별 명령에 해당합니다.
# classic
git checkout from_branch
git branch new_branch
git checkout new_branch
# OR: new/experimental as of Git v2.23
git switch from_branch
git branch new_branch
git switch new_branch
분기 이름을 변경하려면
이나 폴더의 기에있일는파폴이것바처럼꾸는름을더단의말반나일이,git
move'는 ' 명령어에 'move' 명령더 'move' 명사다 'move' 'move'를 합니다.git branch -m
분기 이름을 변경합니다.일반적인 형식은 다음과 같습니다.
git branch -m <old_name> <new_name>
man git branch
는 다음과 같이 표시됩니다.
git branch (-m | -M) [<oldbranch>] <newbranch>
이름을 이을변경다니합예름.branch_1
branch_1.5
:
git branch -m branch_1 branch_1.5
또는 이미 가지고 계신 분들은branch_1
체크아웃된 경우, 현재 체크아웃된 분기의 이름을 다음으로 변경할 수 있습니다.branch_1.5
다음과 같이:
git branch -m branch_1.5
분기를 하려면(" 작면려새하성를기분쳐피feature2
.main
당이현가지있을때고재신▁you때▁have있을이 있을 때.feature1
했습니다.
위에서 배운 많은 내용을 함께 정리하여 한 기능을 완료하고 다른 기능을 시작할 때마다 실행해야 하는 매우 일반적인 예를 제시해 보겠습니다.
# The beginner/intermediate way
git checkout main # check out main branch
git pull # pull latest upstream changes down
git checkout -b feature2 # create branch `feature2` from `main`, and check
# it out, all in one step`
# The advanced way
# [this is what I do--I'll explain why, below]
git fetch origin main:main # pull latest upstream changes down from the
# remote `main` branch, to the
# locally-stored remote-tracking **hidden**
# branch named `origin/main`, **and** to
# the local `main` branch
git checkout -b feature2 main # create branch `feature2` from `main`, and
# check it out, all in one step`
# OR (nearly the same thing)
git fetch origin main # pull latest upstream changes down from the
# remote `main` branch, to the
# locally-stored remote-tracking **hidden**
# branch named `origin/main`. This does NOT
# update the local `main` branch though!
git checkout -b feature2 origin/main # create branch `feature2` from
# `origin/main`, and check it out, all
# in one step`
그래서 제가 지점에 있을 때feature1
그리고 그것을 막 마쳤고 새로운 것을 시작할 준비가 되었습니다.feature2
최신정의여하에 하여.main
브랜치, 내가 왜 이걸 해야 하나요?
git fetch origin main:main
git checkout -b feature2 main
...이것이 무엇입니까?:
git checkout main
git pull
git checkout -b feature2
답은도, 그대은입니다.git checkout
끔찍하게 느리고 무거운 작업이 될 수 있습니다!—레포의 포스트 레포 훅을 활용하는 대규모 모노 레포에 최대 3시간 이상 소요됩니다..git/hooks/post-checkout
파일입니다. 설명해 드리겠습니다. 그.git/hooks/post-checkout
파일은 실행할 때마다 git가 실행되는 스크립트가 포함된 실행 파일입니다.git checkout
다음으로 거는 전화가 포함되어 있는 경우git lfs post-checkout "$@"
그러면 20GB 이상 다운로드를 시도할 수 있습니다.git lfs
데이터(내가 일하는 레포에 특정됨—시나리오가 다를 수 있음)를 순수하게 실행한 후git checkout
저는 그렇게 하고 싶지 않아요!그래서, 저는 생략합니다.git checkout
이러한 번거로움을 피하고 시작하기 위한 프로세스feature2
내가 먼저 필요하지 않은 모든 것을 다운로드하지 않고 즉시 분기!
참고 항목:
- 자주 참조하고 "기트 기초"로 간주되는 답변에 대한 빠른 링크:
로컬 디렉토리의 다른 분기에서 분기를 작성하려면 다음 명령을 사용합니다.
git checkout -b <sub-branch> branch
예:
- 생성할 새 분기의 이름은 'XYZ'입니다.
- 'XYZ'를 생성해야 하는 분기의 이름 'ABC'
git checkout -b XYZ ABC
Git 2.23은 다음의 책임을 소개하고 분할합니다.git checkout
.
Git 2.23 기준으로 기존 분기에서 새 분기 만들기:
git switch -c my-new-branch
새 지점 'my-new-branch'로 전환
- -c는 --well-known git checkout -b의 줄임말입니다.
변경 사항을 자세히 설명하는 GitHub 블로그 게시물을 보십시오.
Git 2.23은 기존 명령 모음인 Git 스위치 및 Git 복원에 새로운 실험 명령 쌍을 제공합니다.이 두 가지는 결국 잘 알려진 깃 체크아웃을 위한 더 나은 인터페이스를 제공하기 위한 것입니다.새로운 명령은 각각 명확한 분리를 의도하여 git checkout의 많은 책임을 깔끔하게 분할합니다.
시작업수에서 합니다.dev
분점.시나리오에서 피쳐 분기는 dev 분기의 끝에서 앞으로 이동하지만 dev 분기는 변경되지 않습니다.직선으로 그리는 것이 더 쉽습니다, 왜냐하면 그것은 전진 운동으로 생각될 수 있기 때문입니다.당신은 개발의 A 지점에 도달했고, 거기서부터 단순히 평행한 경로를 계속했습니다.그 두 갈래는 정말로 갈라지지 않았습니다.
이제 병합하기 전에 개발을 커밋하면 같은 커밋인 A에서 다시 시작하지만 이제 기능은 C로, 개발은 B로 이동합니다.이제 분기가 분기되었기 때문에 시각화하려는 분할이 표시됩니다.
*-----*Dev-------*Feature
대
/----*DevB
*-----*DevA
\----*FeatureC
다른 분기에서 분기를 만들려면 다음 단계를 수행합니다.
가정:
- 현재 마스터 분기에 있습니다.
- 커밋할 변경 사항이 없습니다.(커밋할 변경사항이 있으면 저장합니다!)
BranchExisting
이 이을사새분만기하들분이는름다입니기의야어를름용여하▁name▁로 새 분기를 만들어야 하는 분기의 이름입니다.BranchMyNew
.
단계:
분기를 로컬 컴퓨터로 가져옵니다.
git fetch origin BranchExisting : BranchExisting
이 명령은 동일한 분기 이름을 가진 새 분기를 로컬에 만듭니다.
이제 마스터 분기 체크아웃에서 새로 가져온 분기로
git checkout BranchExisting
이제 BranchExisting에 있습니다.이제 이 기존 분기에서 새 분기를 만듭니다.
git checkout -b BranchMyNew
여기예요.
다른 분기에서 분기를 만드는 경우 다음 구문도 사용할 수 있습니다.
git push origin refs/heads/<sourceBranch>:refs/heads/<targetBranch>
"git checkout -b" + "git push origin"보다 약간 짧습니다.
develop 분기로 전환합니다.
git checkout develop
개발의 피쳐/foo 분기를 작성합니다.
git checkout -b feature/foo develop
빠르게 전달하지 않고 개발할 변경사항 병합
git checkout develop
git merge --no-ff myFeature
이제 변경사항을 서버에 푸시합니다.
git push origin develop
git push origin feature/foo
제게 효과가 있었습니다.
GitHub 저장소로 이동하여 아래 이미지와 같이 새 분기를 생성할 분기 이름을 선택합니다.
그런 다음 만들 분기 이름을 입력하고 분기 만들기를 클릭합니다.
현재 분기에서 새 분기를 만듭니다.
git checkout -b your_new_branch_name
기존 분기의 new_branch를 생성하려면
git checkout -b your_new_branch_name existing _branch_name
언급URL : https://stackoverflow.com/questions/4470523/create-a-branch-in-git-from-another-branch
'programing' 카테고리의 다른 글
Angular 4: 부트스트랩을 어떻게 포함합니까? (0) | 2023.05.09 |
---|---|
iPhone UI 텍스트 필드 - 자리 표시자 텍스트 색상 변경 (0) | 2023.05.09 |
VB에서 16진수 상수를 선언합니다.그물 (0) | 2023.05.09 |
각도 테스트가 실패하고 'XMLHttpRequest'에서 'send'를 실행하지 못함 (0) | 2023.05.09 |
있나요?SQLite용 NET/C# 래퍼? (0) | 2023.05.04 |