이름이 다른 다른 브랜치로 Git 푸시
-
git push
명령과 풍부한 옵션 세트 -
refspecs
매개변수를 한 번 설정하고 여러 번 사용하기 위한git push
의 깔끔한 바로 가기 - Git Push를 다른 지점으로 언제 보내고 싶습니까?
-
힘내
참조 사양
- 자원
git push
에는 Git의 모든 기능을 사용할 수 있는 풍부한 옵션 세트가 있습니다. 그 중 하나는 source:destination
refspecs
매개변수입니다.
우리는 이것을 우리가 선택한 이름으로 특정 브랜치에 git push
하는 데 사용합니다. 마지막으로 로컬과 같은 이름을 가진 분기가 아닌 새 분기를 git push
하면 작업 흐름에서 엄청난 이득을 얻는 몇 가지 사용 사례를 보게 될 것입니다.
git push
명령과 풍부한 옵션 세트
Git은 git push
명령을 사용하여 원격으로 간단하게 푸시하도록 제한하지 않습니다. 대신 원하는 결과를 얻을 수 있는 몇 가지 강력한 옵션을 제공합니다.
이 중 두 가지는 [remote_repe]
및 [src:dst]
refspecs
매개변수입니다.
이러한 매개변수가 다른 브랜치로 git push
하는 데 어떻게 도움이 되는지 살펴보겠습니다.
git push [remote_repo] [refspecs]
[remote_repo]
는 로컬 시스템의 원격 저장소를 나타냅니다. 대부분의 경우 이 이름은 origin
입니다.
[refspecs]
는 특정 분기에 대한 git push
의 흥미로운 매개변수 키입니다. 이 게시물의 끝 부분에서 refspecs
에 대해 자세히 살펴보겠습니다.
형식은 다음과 같습니다. src:dst
, 여기서 src
는 푸시하려는 로컬 분기를 나타냅니다. dst
는 푸시하려는 원격 분기에 대한 참조(또는 이름)입니다.
기본적으로 src
매개변수와 동일한 이름이지만 dst
값을 명시적으로 제공하여 특정 분기에 git push
하도록 선택할 수 있습니다.
먼저 로컬 저장소를 설정하고 원격 저장소에 연결합니다. 그런 다음 로컬 리포지토리에 새 분기도 만듭니다.
원격 저장소에는 로컬에 feature_branch
가 없습니다.
이제 feature_branch
를 새 이름으로 다른 분기로 푸시합니다.
git push origin feature_branch:teamX_featureY
이제 feature_branch
가 원격에서 다른 이름의 새 분기로 푸시된 것을 볼 수 있습니다.
푸시할 때마다 이러한 인수를 전달해야 합니다. 그렇지 않으면 dst
매개변수는 로컬 리포지토리의 분기 이름으로 기본 설정됩니다. 그러나 Git은 반복적으로 입력하는 수고를 덜 수 있는 깔끔한 단축키를 제공합니다.
refspecs
매개변수를 한 번 설정하고 여러 번 사용하기 위한 git push
의 깔끔한 바로 가기
Git에서 브랜치의 업스트림 이름은 항상 푸시하는 브랜치입니다. 아래 명령으로 이 값을 설정할 수 있습니다.
git branch --set-upstream-to <remote_branch>
그러나 단순히 -u
플래그를 전달하여 git push
로 이 명령을 실행할 수도 있습니다.
git push -u origin local:different_remote
이렇게 하면 다음에 푸시할 때 로컬 분기가 different_remote
분기로 푸시됩니다. 따라서 매번 명시적으로 이름을 지정할 필요가 없습니다.
원격 저장소에서도 이 새로운 업스트림 브랜치를 볼 수 있습니다.
다음 명령을 사용하여 config
파일에서 push.default
값을 변경해야 합니다.
git config push.default upstream
이제 dst
매개변수를 언급하지 않고 second_feature
를 푸시하면 Git이 자동으로 different_remote
로 푸시합니다.
git push origin second_feature
Git Push를 다른 지점으로 언제 보내고 싶습니까?
새 분기를 git push
하려는 몇 가지 사용 사례는 다음과 같습니다.
-
멋진 기능이나 모듈을 개발하고 작업 중인 둘 이상의 프로젝트에 푸시하려고 한다고 가정합니다. 디자인한 할로윈 테마 메뉴와 같은 단순한 일반 기능도 마음에 들고 많은 앱에서 원할 수 있습니다.
다른 이름으로 각 프로젝트에 푸시해야 합니다.
-
중앙(원격) 리포지토리와 로컬 설정의 명명 체계가 일치하지 않는 경우가 있습니다. 대규모 팀이 관련된 여러 프로젝트를 수행할 때 특히 그렇습니다.
refspecs
옵션과 함께git push
명령을 사용하면 이러한 경우에 시간을 절약할 수 있습니다.
마지막으로 종료하기 전에 refspecs
에 대해 자세히 살펴보겠습니다.
힘내 참조 사양
Git은 리포지토리의 모든 개체에 대한 참조를 내부적으로 저장합니다. 이를 통해 암호 SHA
해시를 항상 사용하지 않고도 다양한 Git 개체에 쉽고 빠르게 액세스할 수 있습니다.
Git에서는 이러한 참조를 refspec
이라고 합니다.
이러한 refspecs
은 리포지토리 내의 특수 디렉터리에 저장됩니다.
-
refs/heads
디렉토리는 로컬 저장소의 개체에 대한 참조를 저장합니다. -
refs/remotes
에는 원격 리포지토리 Git 개체에 대한 참조가 있습니다.
자원
- https://www.freecodecamp.org/news/git-push-to-remote-branch-how-to-push-a-local-branch-to-origin/
- https://github.com/jiffyclub/blog-posts/commit/4bf63cdafc9a3eb9602646ced972913ef73386bd
- https://davidwalsh.name/git-push-different-name
- https://stackoverflow.com/questions/36139275/git-pushing-to-remote-branch
- https://git-scm.com/docs/git-push