수색…


통사론

  • 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>


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow