이름이 다른 다른 브랜치로 Git 푸시

Ankit Raj Goyal 2023년6월20일
  1. git push 명령과 풍부한 옵션 세트
  2. refspecs 매개변수를 한 번 설정하고 여러 번 사용하기 위한 git push의 깔끔한 바로 가기
  3. Git Push를 다른 지점으로 언제 보내고 싶습니까?
  4. 힘내 참조 사양
  5. 자원
이름이 다른 다른 브랜치로 Git 푸시

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

특정 브랜치로 git 푸시

이제 feature_branch가 원격에서 다른 이름의 새 분기로 푸시된 것을 볼 수 있습니다.

git 새 브랜치를 원격으로 푸시

푸시할 때마다 이러한 인수를 전달해야 합니다. 그렇지 않으면 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 config edit remote pushdefault

Git Push를 다른 지점으로 언제 보내고 싶습니까?

새 분기를 git push하려는 몇 가지 사용 사례는 다음과 같습니다.

  1. 멋진 기능이나 모듈을 개발하고 작업 중인 둘 이상의 프로젝트에 푸시하려고 한다고 가정합니다. 디자인한 할로윈 테마 메뉴와 같은 단순한 일반 기능도 마음에 들고 많은 앱에서 원할 수 있습니다.

    다른 이름으로 각 프로젝트에 푸시해야 합니다.

  2. 중앙(원격) 리포지토리와 로컬 설정의 명명 체계가 일치하지 않는 경우가 있습니다. 대규모 팀이 관련된 여러 프로젝트를 수행할 때 특히 그렇습니다.

    refspecs 옵션과 함께 git push 명령을 사용하면 이러한 경우에 시간을 절약할 수 있습니다.

마지막으로 종료하기 전에 refspecs에 대해 자세히 살펴보겠습니다.

힘내 참조 사양

Git은 리포지토리의 모든 개체에 대한 참조를 내부적으로 저장합니다. 이를 통해 암호 SHA 해시를 항상 사용하지 않고도 다양한 Git 개체에 쉽고 빠르게 액세스할 수 있습니다.

Git에서는 이러한 참조를 refspec이라고 합니다.

이러한 refspecs은 리포지토리 내의 특수 디렉터리에 저장됩니다.

  1. refs/heads 디렉토리는 로컬 저장소의 개체에 대한 참조를 저장합니다.

    로컬 참조 헤드

  2. refs/remotes에는 원격 리포지토리 Git 개체에 대한 참조가 있습니다.

    원격 참조 원격

자원

  1. https://www.freecodecamp.org/news/git-push-to-remote-branch-how-to-push-a-local-branch-to-origin/
  2. https://github.com/jiffyclub/blog-posts/commit/4bf63cdafc9a3eb9602646ced972913ef73386bd
  3. https://davidwalsh.name/git-push-different-name
  4. https://stackoverflow.com/questions/36139275/git-pushing-to-remote-branch
  5. https://git-scm.com/docs/git-push

관련 문장 - Git Push