수색…
통사론
-
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>]
-
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>…]
매개 변수
매개 변수 | 세부 |
---|---|
-d, --delete | 분기를 삭제하십시오. 분기는 업스트림 브랜치에서 완전히 병합되어야하며, 업스트림이 --track 또는 --set-upstream 로 설정되지 않은 경우에는 HEAD 에 완전히 병합되어야합니다. |
-디 | --delete --force 대한 바로 가기 |
-m, --move | 분기 및 해당 reflog를 이동 / 이름 바꾸기 |
-엠 | --move --force 대한 바로 가기 |
-r, --remotes | 원격 추적 분기를 나열하거나 삭제합니다 (-d와 함께 사용하는 경우). |
-a, --all | 원격 추적 분기와 로컬 분기를 모두 나열하십시오. |
--명부 | 목록 모드를 활성화하십시오. git branch <pattern> 는 브랜치를 생성하려고 시도 할 것이다. git branch --list <pattern> 을 사용하여 일치하는 브랜치를 나열한다. |
--set-upstream | 지정된 브랜치가 아직 존재하지 않거나 --force 가 주어지면 --track 과 똑같이 작동합니다. 그렇지 않으면 분기를 만들 때 --track과 같은 구성을 설정합니다. 단, 분기 지점은 변경되지 않습니다 |
비고
모든 저장소에는 하나 이상의 브랜치가 있습니다. 분기는 커밋 시퀀스의 HEAD
에 대한 명명 된 참조입니다.
git repo에는 현재 분기가 있습니다 ( git branch
명령으로 인쇄 된 분기 이름 목록에 *
가 표시되어 있음). git commit
명령으로 새 커밋을 만들 때마다 새 커밋이 현재 분기의 HEAD
가되고 이전 HEAD는 새 확약의 상위가됩니다.
새 분기는 새로운 분기로 커밋 될 때까지 생성 된 분기와 동일한 HEAD
를 갖습니다.
지점 나열
힘내라 지점을 나열하는 여러 명령을 제공합니다. 모든 명령은 git branch
의 기능을 사용합니다. git branch
는 명령 행에 어떤 옵션이 놓여 지는지에 따라 특정 브랜치의 목록을 제공합니다. 망할 놈은 가능하다면 그 옆에 별표가있는 현재 선택한 가지를 나타낼 것입니다.
골 | 명령 |
---|---|
지역 지부 나열 | git branch |
로컬 브랜치 세부 정보 표시 | git branch -v |
원격 및 로컬 분기 나열 | git branch -a 또는 git branch --all |
원격 및 로컬 브랜치 나열 (자세한 정보 표시) | git branch -av |
원격 지점 나열 | git branch -r |
최신 커밋으로 원격 브랜치 나열 | git branch -rv |
병합 된 분기 나열 | git branch --merged |
병합되지 않은 분기 나열 | git branch --no-merged |
커밋을 포함하는 브랜치 나열 | git branch --contains [<commit>] |
참고 사항 :
-
-v
eg$ git branch -avv
또는$ git branch -vv
v
를 추가하면 업스트림 브랜치의 이름도 출력됩니다. - 빨간색으로 표시된 지점은 원격 지점입니다.
새 분기 만들기 및 체크 아웃
현재 분기를 유지하면서 새 분기를 만들려면 다음을 사용합니다.
git branch <name>
일반적으로 지점 이름에는 공백이 없어야하며 여기에 나열된 다른 사양이 적용됩니다. 기존 분기로 전환하려면 다음을 수행하십시오.
git checkout <name>
새 분기를 작성하고 전환하려면 다음을 수행하십시오.
git checkout -b <name>
현재 분기 (HEAD라고도 함)의 마지막 커밋이 아닌 다른 지점에서 분기를 만들려면 다음 명령 중 하나를 사용하십시오.
git branch <name> [<start-point>]
git checkout -b <name> [<start-point>]
<start-point>
는 git으로 알려진 모든 개정판 일 수 있습니다 (예 : 다른 분기 이름, SHA 커밋 또는 HEAD 또는 태그 이름과 같은 기호 참조).
git checkout -b <name> some_other_branch
git checkout -b <name> af295
git checkout -b <name> HEAD~5
git checkout -b <name> v1.0.5
원격 브랜치에서 브랜치를 생성하려면 (기본 <remote_name>
은 origin 임) :
git branch <name> <remote_name>/<branch_name>
git checkout -b <name> <remote_name>/<branch_name>
특정 분기 이름이 하나의 리모컨에서만 발견되면
git checkout -b <branch_name>
이는
git checkout -b <branch_name> <remote_name>/<branch_name>
경우에 따라 최근 커밋 중 일부를 새 분기로 이동해야 할 수도 있습니다. 이는 다음과 같이 분기 및 "롤백"하여 수행 할 수 있습니다.
git branch <new_name>
git reset --hard HEAD~2 # Go back 2 commits, you will lose uncommitted work.
git checkout <new_name>
다음은이 기법에 대한 설명입니다.
Initial state After git branch <new_name> After git reset --hard HEAD~2
newBranch newBranch
↓ ↓
A-B-C-D-E (HEAD) A-B-C-D-E (HEAD) A-B-C-D-E (HEAD)
↑ ↑ ↑
master master master
로컬로 분기 삭제
$ git branch -d dev
분기라는 이름의 삭제 dev
의 변경이 다른 지점과 병합됩니다 손실되지 않습니다. dev
브랜치가 아직 병합되지 않은 변경 사항을 잃어 버렸다면, git branch -d
는 실패합니다 :
$ git branch -d dev
error: The branch 'dev' is not fully merged.
If you are sure you want to delete it, run 'git branch -D dev'.
경고 메시지에 따라 -D
플래그를 사용하여 분기를 강제로 삭제하고 (해당 분기에서 병합되지 않은 변경 사항을 잃을 수 있음)
$ git branch -D dev
원격 지사를 추적하는 새로운 지사 확인
원격 분기 origin/feature
를 추적하는 새 분기 feature
를 작성하는 세 가지 방법이 origin/feature
.
-
git checkout --track -b feature origin/feature
, -
git checkout -t origin/feature
, -
git checkout feature
- 로컬feature
분기가없고feature
분기가있는 원격feature
이 하나만 있다고 가정합니다.
원격 지점을 추적하기 위해 업스트림을 설정하려면 다음을 입력하십시오.
-
git branch --set-upstream-to=<remote>/<branch> <branch>
-
git branch -u <remote>/<branch> <branch>
어디에:
-
<remote>
는origin
,develop
또는 사용자가 만든 것, -
<branch>
는 원격에서 추적 할 사용자의 분기입니다.
로컬 브랜치가 추적중인 원격 브랜치를 확인하려면 다음을 수행하십시오.
-
git branch -vv
분기 이름 바꾸기
체크 아웃 한 지점의 이름을 변경하십시오.
git branch -m new_branch_name
다른 분기 이름 바꾸기 :
git branch -m branch_you_want_to_rename new_branch_name
현재 작업 디렉토리의 단일 파일을 다른 브랜치에서 동일한 파일로 덮어 씁니다.
체크 아웃 된 파일은이 파일에서 수행 한 커밋되지 않은 변경 사항을 덮어 씁니다 .
이 명령은 file.example
파일 ( path/to/
디렉토리 path/to/
에 file.example
을 체크 아웃 file.example
파일에 대한 모든 변경 사항 을 덮어 씁니다 .
git checkout some-branch path/to/file
some-branch
는 git으로 알려진 tree-ish
가 될 수 있습니다 (자세한 내용은 개정 선택 및 gitrevisions 참조)
파일을 파일로 오인 할 수있는 경우 경로 앞에 --
를 추가해야합니다 (선택 사항). --
뒤에 옵션을 더 이상 제공 할 수 없습니다.
git checkout some-branch -- some-file
두 번째 some-file
파일은이 예제의 파일입니다.
원격 분기 삭제
상의 지점 삭제하려면 origin
원격 저장소를, 당신은 망할 놈의 버전 1.5.0 및 최신 사용할 수
git push origin :<branchName>
Git 버전 1.7.0부터 원격 브랜치를 삭제할 수있다.
git push origin --delete <branchName>
로컬 원격 추적 분기를 삭제하려면 다음을 수행하십시오.
git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Shorter
git fetch <remote> --prune # Delete multiple obsolete tracking branches
git fetch <remote> -p # Shorter
분기를 로컬에서 삭제합니다. 병합되지 않은 변경 사항이있는 경우 분기를 삭제하지 않습니다.
git branch -d <branchName>
변경 사항이 병합되지 않은 경우에도 분기를 삭제하려면 다음을 수행하십시오.
git branch -D <branchName>
고아 분기 만들기 (즉, 부모 커밋이없는 분기)
git checkout --orphan new-orphan-branch
이 새로운 브랜치에 대한 첫 번째 커밋에는 부모가 없으며 다른 모든 브랜치와 커밋되지 않은 새로운 히스토리의 근원이됩니다.
지점을 원격지로 푸시
로컬 브랜치에서 작성한 커밋을 원격 저장소로 푸시하는 데 사용됩니다.
git push
명령은 두 개의 인수를 취합니다.
- 원격 이름 (예 :
origin
- 분기 이름 (예 :
master
예 :
git push <REMOTENAME> <BRANCHNAME>
예를 들어, 보통 git push origin master
를 실행하여 로컬 변경 사항을 온라인 저장소에 푸시합니다.
-u
( --set-upstream
줄임말)를 사용하면 푸시 중에 추적 정보가 설정됩니다.
git push -u <REMOTENAME> <BRANCHNAME>
기본적으로 git
은 로컬 브랜치를 같은 이름의 원격 브랜치에 푸시한다. 예를 들어 new-feature
라는 로컬이있는 경우 로컬 브랜치를 푸시하면 원격 브랜치 new-feature
됩니다. 원격 지점에 대해 다른 이름을 사용하려는 경우로 구분하여 로컬 브랜치 이름, 후 원격 이름을 추가 :
:
git push <REMOTENAME> <LOCALBRANCHNAME>:<REMOTEBRANCHNAME>
현재 분기 HEAD를 임의의 커밋으로 이동
분기는 커밋에 대한 포인터 일 뿐이므로 자유롭게 이동할 수 있습니다. 분기가 커밋 aabbcc
참조하도록하려면 명령을 실행하십시오.
git reset --hard aabbcc
이것은 지사의 현재 커밋을 덮어 쓰며 전체 커밋을 덮어 씁니다. 이 명령을 실행하여 일부 작업을 느슨하게 할 수 있습니다. 이 경우 reflog 를 사용하여 손실 된 커밋을 복구 할 수 있습니다. 현재 분기 대신에 새로운 분기에서이 명령을 수행하는 것이 좋습니다.
그러나이 명령은 리베이스하거나 다른 큰 히스토리 수정을 수행 할 때 특히 유용 할 수 있습니다.
이전 분기로의 빠른 전환
다음을 사용하여 이전 분기로 빠르게 전환 할 수 있습니다.
git checkout -
가지에서 검색하기
특정 커밋 또는 태그가 포함 된 로컬 분기를 나열하려면
git branch --contains <commit>
특정 커밋 또는 태그가 포함 된 로컬 및 원격 분기를 나열하려면
git branch -a --contains <commit>