질문자 :revohsalf
나는 master 와 dev의 두 가지가 있습니다.
개발 분기에서 "기능 분기"를 만들고 싶습니다.
현재 브랜치 dev에서 다음을 수행합니다.
$ git checkout -b myfeature dev
... (일부 작업)
$ git commit -am "blablabla" $ git push origin myfeature
그러나 내 지점을 시각화한 후 다음을 얻었습니다.
--**master** ------0-----0-----0-----0-----0 ------------------------**dev**----**myfeature**
내 말은 지점이 ff 병합 된 것 같은데 왜 그런지 이해가되지 않습니다 ...
내가 뭘 잘못하고 있어?
다른 브랜치에서 분기하고 기능 브랜치를 위해 원격 저장소로 푸시백하는 방법을 설명해 주시겠습니까?
여기에 설명된 것과 같은 분기 모델의 모든 것.
게시한 링크의 방법이 마음에 들면 Git Flow를 살펴보십시오.
그가 그 워크플로를 위해 만든 스크립트 세트입니다.
그러나 귀하의 질문에 대답하려면:
$ git checkout -b myFeature dev
dev에서 MyFeature 분기를 만듭니다. 할 일을 한 다음
$ git commit -am "Your message"
이제 빨리 감기 없이 변경 사항을 dev에 병합하십시오.
$ git checkout dev $ git merge --no-ff myFeature
이제 서버에 변경 사항을 푸시하십시오.
$ git push origin dev $ git push origin myFeature
그리고 원하는 대로 보게 될 것입니다.
AbizernGit의 기존 분기에서 새 분기를 생성하려면 옵션을 따르십시오.
먼저 새 브랜치를 생성하려는 브랜치로 변경/체크아웃합니다. 예를 들어 다음과 같은 분기가 있는 경우:
따라서 "branch1" 이라는 브랜치 아래에 "subbranch_of_b1"이라는 새 브랜치를 생성하려면 다음 단계를 따르세요.
"branch1" 로 체크아웃 또는 변경
git checkout branch1
이제 다음 명령을 사용하여 "BRANCH1"에서 "subbranch_of_b1"라는 새로운 지점을 만들 수 있습니다.
git checkout -b subbranch_of_b1 branch1
위는 (참고 분기 BRANCH1에서 subbranch_of_b1라는 새로운 지점을 만듭니다 branch1
위의 명령은 다른 지점하지만에있는 경우 HEAD는 현재 당신이 그것을에 정확한 수 가리키는 때문에 의무적으로하지 않습니다).
이제 subbranch_of_b1로 작업한 후 로컬 또는 원격으로 커밋하고 푸시하거나 병합할 수 있습니다.
subbranch_of_b1을 원격으로 푸시
git push origin subbranch_of_b1
Praveen George지점 만들기
- 마스터 브랜치가 체크아웃되면 브랜치를 생성합니다. 여기에서 마스터의 커밋은 생성한 브랜치에 동기화됩니다.
$ git branch branch1
- branch1이 체크아웃되면 브랜치를 생성합니다. 여기에서 브랜치1의 커밋은 브랜치2에 동기화됩니다.
$ 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
( 병합된 상태를 확인하지 않고 강제로 삭제 )
분기 생성 및 전환
-
$ git checkout -b branchname
완전히 포함된 분기
************************** 분기 차이점 [ git diff branch1..branch2 ] ************** **********
여러 줄 차이-
$ git diff master..branch1
한 줄 차이-
$ git diff --color-words branch1..branch2
Gnanasekar S로컬 디렉토리의 다른 분기에서 분기를 생성하려면 다음 명령을 사용할 수 있습니다.
git checkout -b <sub-branch> branch
예를 들어:
- 생성될 새 브랜치의 이름 'XYZ'
- XYZ가 생성되어야 하는 지점 ABC의 이름
git checkout -b XYZ ABC
Sumit Ghewadegit checkout
의 책임을 분할 git switch
및 git restore
를 도입했습니다.
git 2.23부터 기존 분기에서 새 분기 만들기:
git switch -c my-new-branch
새로운 지점 'my-new-branch'로 전환
- -c 는 --create의 약자이며 잘 알려진 git checkout -b를 대체합니다.
변경 사항을 자세히 설명하는 이 Github 블로그 게시물을 살펴보세요.
Git 2.23은 기존 명령 모음인 git switch 및 git restore 에 새로운 실험 명령 쌍을 제공합니다. 이 두 가지는 결국 잘 알려진 git 체크아웃을 위한 더 나은 인터페이스를 제공하기 위한 것입니다. 새로운 명령은 git checkout 의 많은 책임을 깔끔하게 분할하여 각각을 명확하게 구분하려고 합니다.
JSON C11dev
브랜치에서 동시 작업을 수행합니다. 시나리오에서 기능 분기는 dev 분기의 끝에서 앞으로 이동하지만 dev 분기는 변경되지 않습니다. 앞으로 나아가는 움직임으로 생각할 수 있기 때문에 직선으로 그리는 것이 더 쉽습니다. 당신은 dev에서 A를 가리키고 거기에서 단순히 평행 경로를 계속했습니다. 두 가지가 실제로 분기되지 않았습니다.
이제 dev에서 커밋을 수행하면 병합하기 전에 동일한 커밋 A에서 다시 시작하지만 이제 기능은 C로, dev는 B로 이동합니다. 이렇게 하면 시각화하려는 분할이 분기로 표시됩니다. 이제 분기되었습니다.
*-----*Dev-------*Feature
대
/----*DevB *-----*DevA \----*FeatureC
ToothlessRebel다른 브랜치에서 git에 브랜치를 만드는 다양한 방법:
이 답변은 기존 답변에 없는 추가 통찰력을 질문 자체 의 제목 과 관련하여 추가하지만( 다른 브랜치에서 Git에 브랜치 생성 ) 이미 충분한 답변이 있는 질문의 보다 좁은 세부 사항은 다루지 않습니다. 여기.
지금 바로 아래 #1을 수행하는 방법을 알아야 했기 때문에 추가하고 있습니다(체크아웃하지 않은 지점에서 새 지점 생성). 수행 방법이 명확하지 않았고 Google 검색이 주도했습니다. 여기에 상위 검색 결과로 표시됩니다. 그래서 여기에서 내 발견을 공유하겠습니다. 이것은 여기의 다른 답변에 의해 잘 다루어지지 않습니다.
이 작업을 수행하는 동안 git branch
명령도 아래에 추가하겠습니다.
1. 체크아웃하지 않은 지점에서 새 지점을 생성하려면:
만들기 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>]
2. 체크아웃한 브랜치에서 새 브랜치를 생성하려면:
git branch new_branch
이것은 rebase, squashing, hard reset 등을 하기 전에 - 당신의 브랜치를 심하게 망칠 수 있는 어떤 일을 하기 전에 백업을 만드는 데 좋습니다.
예: 저는 feature_branch1
git rebase -i master
사용하여 20개의 커밋을 1로 스쿼시하려고 합니다. 이것을 "실행 취소"하고 싶다면 먼저 이 분기를 백업합시다! 나는 이 모든 것을... 그때...시간에 수행하고 프로세스에서 feature_branch1
을 엉망으로 만든 경우에 대비하여 항상 이 백업 분기로 쉽게 돌아가서 다시 분기할 수 있다는 사실을 알게 되어 매우 유용하고 위안이 됩니다. :
git branch feature_branch1_BAK_20200814-1320hrs_about_to_squash
20200814-1320hrs
YYYYMMDD-HHMMhrs
형식의 날짜 및 시간이므로 2020년 8월 14일 13:20hrs(1:20pm)가 됩니다. 확실히 삭제할 준비가 되었습니다. 이렇게 하지 않고 심하게 엉망이 된다면, 엉망이 git reflog
를 사용하여 브랜치를 찾아야 합니다. 이는 훨씬 더 어렵고 스트레스가 많으며 오류가 발생하기 쉽습니다.
3. 체크아웃한 브랜치에서 새 브랜치를 생성 하고 체크아웃하려면:
git checkout -b new_branch
그곳에서 무슨 일이 일어나고 있는지 분명히 하기 위해 위의 한 명령은 다음 두 개의 개별 명령과 동일합니다.
git branch new_branch git checkout new_branch
4. 체크아웃하지 않은 브랜치에서 새 브랜치를 생성 하고 체크아웃하려면:
git checkout -b new_branch from_branch
그곳에서 무슨 일이 일어나고 있는지 분명히 하기 위해 위의 이 하나의 명령은 다음 세 가지 개별 명령과 동일합니다.
git checkout from_branch git branch new_branch git checkout new_branch
5. 지점 이름을 바꾸려면
터미널에서 일반 파일이나 폴더의 이름을 바꾸는 것과 마찬가지로 git
은 "이름 바꾸기"를 'm'ove 명령과 비슷하다고 생각 git branch -m
을 사용하여 분기 이름을 바꿉니다. 일반적인 형식은 다음과 같습니다.
git branch -m <old_name> <new_name>
man git branch
는 다음과 같이 보여줍니다.
git branch (-m | -M) [<oldbranch>] <newbranch>
branch_1
의 이름을 branch_1.5로 branch_1.5
.
git branch -m branch_1 branch_1.5
Gabriel Staples다른 지점에서 지점을 만들려면 다음 단계를 따르십시오.
가정 :
- 현재 마스터 브랜치에 있습니다.
- 커밋할 변경 사항이 없습니다. (커밋할 변경 사항이 있으면 숨겨두세요!).
-
BranchExisting
BranchMyNew
새 분기를 만들어야 하는 분기의 이름입니다.
단계 :
분기를 로컬 시스템으로 가져옵니다.
$ git fetch origin BranchExisting : BranchExisting
이 명령은 동일한 브랜치 이름으로 로컬에 새 브랜치를 생성합니다.
이제 마스터 브랜치 체크아웃에서 새로 가져온 브랜치로
$ git checkout BranchExisting
현재 BranchExisting에 있습니다. 이제 이 기존 분기에서 새 분기를 만듭니다.
$ git checkout -b BranchMyNew
자!
Darshit다른 브랜치에서 브랜치를 생성하기 위해 다음 구문도 사용할 수 있습니다.
git push origin refs/heads/<sourceBranch>:refs/heads/<targetBranch>
"git checkout -b " + "git push origin "보다 약간 짧습니다.
Alexander Samoylov개발 분기로 전환합니다.
$ 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
Ben Naim Naim출처 : http:www.stackoverflow.com/questions/4470523/create-a-branch-in-git-from-another-branch