다른 지점에서 Git에 지점 만들기


989

나는 두 가지 가지가 있습니다 : masterdev

dev 브랜치 에서 "feature branch"를 만들고 싶습니다 .

현재 지점 개발팀에서 다음을 수행합니다.

$ git checkout -b myfeature dev

... (일부)

$ git commit -am "blablabla"
$ git push origin myfeature

그러나 내 지점을 시각화 한 후 다음을 얻었습니다.

--**master**
------0-----0-----0-----0-----0
------------------------**dev**----**myfeature**

나는 지점이 합병 된 것처럼 보이며 왜 그런지 이해하지 못합니다 ...

내가 뭘 잘못하고 있니?

다른 지점에서 분기하고 기능 지점의 원격 저장소로 다시 푸시하는 방법을 설명해 주시겠습니까?

여기에 설명 된 것과 같은 분기 모델의 모든 것 .

답변:


1431

게시 한 링크의 방법이 마음에 들면 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

그리고 당신은 당신이 그것을 원하는 방법을 볼 수 있습니다.


32
그것이 myFeature합쳐진 후 추진의 중요성은 무엇 dev입니까?
Alexander Suraphel

3
@spartacus myFeature병합하기 전에 브랜치를 서버로 푸시 한 경우 아무것도 없습니다. 그러나 myFeature아직 서버로 푸시되지 않고 서버에 나타나게하려면 서버를 밀어야합니다.
xOneca

14
이다 git checkout -b myFeature dev는이 3 명령과 동일 : git checkout dev다음 git branch myFeature, 다음 git checkout myFeature?
케빈 메러디스

3
그렇거나되어야합니다. 다른 것을보고 있습니까?
Abizern

33
다른 초보자를 명확히하기 위해 이것은 --no-ff병합의 모습입니다
A__

407

Git의 기존 브랜치에서 새 브랜치를 만들려면 옵션을 따르십시오.

먼저 새 지점을 만들 지점에서 지점을 변경 / 체크 아웃하십시오. 예를 들어 다음과 같은 분기가있는 경우

  • 석사
  • dev
  • branch1

당신이라는 새로운 지점 만들려면 그래서 "subbranch_of_b1" 라는 이름의 분기 아래를 "BRANCH1" 의 단계를 따릅니다 :

  1. 체크 아웃 또는 "branch1" 로 변경

    git checkout branch1
    
  2. 이제라는 새로운 지점 생성 "subbranch_of_b1을" 언더 "BRANCH1" 다음 명령을 사용하여.

    git checkout -b subbranch_of_b1 branch1
    

    위의라는 새로운 지점이 생성됩니다 subbranch_of_b1 분기 아래 BRANCH1 (주의를 branch1, 위의 명령에 HEAD는 현재 그것을 가리키는 때문에 의무적으로하지 않습니다 당신이 할 수있는 정확한 그것은 다른 지점하지만에있는 경우).

  3. subbranch_of_b1 을 사용한 후 로컬 또는 원격으로 커밋 및 푸시 또는 병합 할 수 있습니다.

다른 분기에서 분기를 작성하는 샘플 그래픽 그림

subbranch_of_b1을 원격으로 푸시

 git push origin subbranch_of_b1 

7
subbranch_of_b1을 원격으로 푸시하는 방법 ??
user269867

13
@ user269867 : "git push origin subbranch_of_b1"이이 작업을 수행합니다.
Praveen George

4
이제 변경 사항을 마스터로 푸시하면 branch1에서 자동으로 발생합니까?
마스터 요다

2
머리 현재, 당신이 할 수있는 그것을 가리키는 때문에 위의 명령에 BRANCH1는 필수가 아닙니다 정확한 그것은 비록 당신은 다른 지점에있는 경우 그게 내가 찾던입니다
felipsmartins

10
여기 git checkout -b some-branch에 속기가 궁금합니다 git checkout -b some-branch master. 그것은 git checkout -b some-branch속기입니다git checkout -b some-branch <current_active_branch>
Frank Henard

45

지점 만들기

  • 마스터 분기가 체크 아웃 될 때 분기를 작성하십시오. 여기서 마스터 커밋은 생성 한 브랜치에 동기화됩니다.

    $ git branch branch1

  • branch1이 체크 아웃 될 때 분기를 작성하십시오. 여기서 branch1의 커밋은 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 ( 병합 상태를 확인하지 않고 강제 삭제 )

지점 생성 및 전환

  • $ git checkout -b branchname

완전히 포함 된 지점

  • $ git branch --merged


************************** 분기 차이 [git diff branch1..branch2] ************** **********

여러 줄 차이
  • $ git diff master..branch1
한 줄 차이
  • $ git diff --color-words branch1..branch2

1
또한 지점 이름을 바꾼 후 git push origin :old-name new-name이전 이름의 원격 지점을 삭제하고 새 이름의 로컬 지점을 푸시하십시오.
95faf8e76605e973

13

dev지점 에서 동시에 작업하십시오 . 시나리오에서 기능 분기는 개발 분기의 끝에서 앞으로 이동하지만 개발 분기는 변경되지 않습니다. 정방향으로 생각할 수 있기 때문에 직선으로 그리는 것이 더 쉽습니다. 당신은 그것을 dev에서 A를 가리 키도록 만들었고 거기에서 당신은 단순히 평행 한 길을 계속했습니다. 두 지점은 실제로 분기되지 않았습니다.

이제 dev에 커밋하면 병합하기 전에 다시 같은 커밋 A에서 시작하지만 이제 기능은 C로 이동하고 B로 이동합니다. 그러면 분기로 시각화하려는 분할이 표시됩니다. 이제 분기되었습니다.

*-----*Dev-------*Feature

       /----*DevB
*-----*DevA
       \----*FeatureC

9

힘내 2.23 은의 책임을 소개 git switch하고 git restore분할git checkout

자식 2.23부터 기존 지점에서 새 지점 만들기 :

git switch -c my-new-branch

새로운 지점 'my-new-branch'로 전환

  • -c--create의 약자이며 잘 알려진 git checkout을 대체합니다. -b

변경 사항을 자세히 설명하는 Github 블로그 게시물을 살펴보십시오 .

Git 2.23은 git switchgit restore 같은 새로운 실험 명령 쌍을 기존 명령 모음에 제공합니다 . 이 두 가지는 결국 잘 알려진 git checkout을위한 더 나은 인터페이스를 제공하기위한 것입니다. 새로운 명령은 각각 명확하게 분리되어 git checkout 의 많은 책임을 깔끔하게 나누려고합니다.


9

로컬 디렉토리의 다른 브랜치에서 브랜치를 만들려면 다음 명령을 사용할 수 있습니다.

git checkout -b <sub-branch> branch

예를 들어 :

  • 생성 할 새 분기 이름 'XYZ'
  • XYZ를 작성해야하는 지점 ABC의 이름
git checkout -b XYZ ABC

3

다른 지점에서 지점을 만들려면 다음 단계를 수행하십시오.

가정 :

  1. 현재 마스터 지점에 있습니다.
  2. 커밋 할 변경 사항이 없습니다. 커밋 할 변경 사항이 있으면 숨기십시오!
  3. BranchExistingname으로 새 브랜치를 만들어야하는 브랜치 이름 BranchMyNew입니다.

단계 :

  1. 로컬 머신으로 분기를 가져옵니다.

    $ git fetch origin BranchExisting : BranchExisting
    

이 명령은 지역에 동일한 지점 이름으로 새 지점을 만듭니다.

  1. 이제 마스터 지점 체크 아웃에서 새로 가져온 지점으로

    $ git checkout BranchExisting
    
  2. 현재 BranchExisting에 있습니다. 이제이 기존 지점에서 새 지점을 만듭니다.

    $ git checkout -b BranchMyNew
    

여기 있습니다!


1

다른 분기에서 분기를 만들려면 다음 구문도 사용할 수 있습니다.

git push origin refs/heads/<sourceBranch>:refs/heads/<targetBranch>

"git checkout -b"+ "git push origin"보다 약간 짧습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.