etc./StackOverFlow

새 로컬 분기를 원격 Git 리포지토리로 푸시하고 추적하려면 어떻게 해야 합니까?

청렴결백한 만능 재주꾼 2021. 9. 26. 10:52
반응형

질문자 :Roni Yaniv


다음을 수행할 수 있기를 원합니다.

  1. git branch 또는 git checkout -b 를 통해 다른 (원격 또는 로컬) 분기를 기반으로 로컬 분기를 만듭니다.

  2. 로컬 브랜치를 원격 저장소(게시)로 git pullgit push 가 즉시 작동하도록 추적 가능하게 만드십시오.

어떻게 해야 하나요?

--set-upstream 에 대해 알고 있지만 이는 생성 후 작업입니다. 브랜치를 원격 저장소로 푸시할 때 비슷한 변경을 하는 방법을 찾고 싶습니다.



답변자 : Daniel Ruoso


Git 1.7.0 이상에서는 새 분기를 체크아웃할 수 있습니다.

 git checkout -b <branch>

파일을 편집하고 추가하고 커밋합니다. 그런 다음 -u ( --set-upstream 약자) 옵션 을 사용하여 푸시합니다.

 git push -u origin <branch>

Git은 푸시 중에 추적 정보를 설정합니다.



답변자 : ErichBSchulz


다른 사람과 repo를 공유하지 않는 경우 모든 분기를 원격 --set-upstream 추적을 올바르게 수행하는 데 유용합니다.

 git push --all -u

(OP가 요구한 것과 정확히 일치하지는 않지만 이 한 줄짜리는 꽤 인기가 있습니다)

repo를 다른 사람들과 공유하는 경우 모든 이상한 실험 브랜치로 repo를 막히기 때문에 이것은 정말 좋은 형태가 아닙니다.



답변자 : Lohrun


git push -u 가 도입되기 전에는 원하는 것을 얻을 수 있는 git push 옵션이 없었습니다. 새 구성 문을 추가해야 했습니다.

다음을 사용하여 새 분기를 만드는 경우:

 $ git checkout -b branchB $ git push origin branchB:branchB

git config .git/config 파일을 직접 편집하지 않도록 할 수 있습니다.

 $ git config branch.branchB.remote origin $ git config branch.branchB.merge refs/heads/branchB

.git/config 파일을 수동으로 편집하여 이 분기에 추적 정보를 추가할 수 있습니다.

 [branch "branchB"] remote = origin merge = refs/heads/branchB


답변자 : piyushmandovra


간단히 말해서 새 로컬 분기를 만들려면 다음을 수행하십시오.

 git branch <branch-name>

원격 저장소로 푸시하려면 다음을 수행하십시오.

 git push -u origin <branch-name>


답변자 : bg17aw


여기에 이미 제공된 솔루션의 약간의 변형:

  1. 다른(원격 또는 로컬) 분기를 기반으로 로컬 분기를 만듭니다.

     git checkout -b branchname
  2. 로컬 브랜치를 원격 저장소(게시)로 git pullgit push 가 즉시 작동하도록 추적 가능하게 만듭니다.

     git push -u origin HEAD

    HEAD 사용하는 것은 "현재 분기를 원격지의 동일한 이름으로 푸시하는 편리한 방법"입니다. 출처: https://git-scm.com/docs/git-push Git 용어로 HEAD(대문자)는 현재 분기(트리)의 상단에 대한 참조입니다.

    -u 옵션은 --set-upstream 줄임말입니다. 이렇게 하면 현재 분기에 대한 업스트림 추적 참조가 추가됩니다. .git/config 파일에서 이를 확인할 수 있습니다.

    여기에 이미지 설명 입력



답변자 : Arda


나는 단순히

 git push -u origin localBranch:remoteBranchToBeCreated

이미 복제된 프로젝트를 통해

localBranch 커밋 아래에 remoteBranchToBeCreated 라는 새 분기를 만듭니다.

편집 : 이것은 현재 로컬 브랜치( localBranch 명명될 수 있음) 업스트림을 origin/remoteBranchToBeCreated 합니다. 이 문제를 해결하려면 다음을 입력하기만 하면 됩니다.

 git branch --set-upstream-to=origin/localBranch

또는

 git branch -u origin/localBranch

따라서 현재 로컬 분기는 이제 origin/localBranch 다시 추적합니다.



답변자 : VP.


다음과 같은 프로젝트를 이미 복제했다고 가정합니다.

 git clone http://github.com/myproject.git
  1. 그런 다음 로컬 복사본에서 새 분기를 만들고 확인합니다.

     git checkout -b <newbranch>
  2. 서버에서 "git bare --init"을 만들고 myapp.git을 만들었다고 가정하면 다음을 수행해야 합니다.

     git remote add origin ssh://example.com/var/git/myapp.git git push origin master
  3. 그 후에 사용자는 다음을 수행할 수 있어야 합니다.

     git clone http://example.com/var/git/myapp.git

참고: 서버가 가동되고 있다고 가정합니다. 그렇지 않으면 작동하지 않습니다. 좋은 방법이 여기에 있습니다 .

추가됨

원격 분기 추가:

 git push origin master:new_feature_name

모든 것이 양호한지 확인합니다(원점 가져오기 및 원격 분기 나열):

 git fetch origin git branch -r

로컬 분기를 만들고 원격 분기를 추적합니다.

 git checkout -tb new_feature_name origin/new_feature_name

모두 업데이트:

 git pull


답변자 : Tobias Kienzler


오래된 것을 편집하십시오. git push -u origin $BRANCHNAME


William의 기타 Git 도구 에서 git publish-branch 를 사용합니다.

OK, Ruby는 아니므로 보호 장치를 무시하십시오! - 스크립트의 마지막 세 줄을 사용하여 bash 스크립트 git-publish-branch 만듭니다.

 #!/bin/bash REMOTE=$1 # Rewrite this to make it optional... BRANCH=$2 # Uncomment the following line to create BRANCH locally first #git checkout -b ${BRANCH} git push ${ORIGIN} ${BRANCH}:refs/heads/${BRANCH} && git config branch.${BRANCH}.remote ${REMOTE} && git config branch.${BRANCH}.merge refs/heads/${BRANCH}

그런 다음 git-publish-branch REMOTENAME BRANCHNAME . 여기서 REMOTENAME은 일반적으로 원본입니다(원점을 기본값으로 사용하도록 스크립트를 수정할 수 있습니다...)



답변자 : cptjack


기존 브랜치에서 분기하여 새 브랜치를 생성하려면

 git checkout -b <new_branch>

그런 다음 다음을 사용하여 이 새 분기를 저장소에 푸시합니다.

 git push -u origin <new_branch>

이것은 모든 로컬 커밋을 생성하고 새로 생성된 원격 브랜치 origin/<new_branch>



답변자 : Fadid


1.7 이전 GitLab 버전의 경우 다음을 사용하십시오.

 git checkout -b name_branch

(name_branch, 예: master )

원격 저장소로 푸시하려면 다음을 수행하십시오.

 git push -u origin name_new_branch

(name_new_branch, 예: feature )



답변자 : Thuy Trinh


새 분기를 만들 때마다 그에 따라 원격 분기를 푸시하고 추적하도록 별칭을 만들었습니다. 다음 청크를 .bash_profile 파일에 넣습니다.

 # Create a new branch, push to origin and track that remote branch publishBranch() { git checkout -b $1 git push -u origin $1 } alias gcb=publishBranch

사용법 : gcb thuy/do-sth-kool thuy/do-sth-kool 과 함께 입력하면 새 브랜치 이름입니다.



답변자 : Javier C.


2단계로 할 수 있습니다.

1. checkout 을 사용하여 로컬 브랜치를 생성합니다.

 git checkout -b yourBranchName

원하는 대로 지점과 함께 작업하세요.

2. push 명령을 사용하여 분기를 자동 생성하고 코드를 원격 리포지토리로 보냅니다.

 git push -u origin yourBanchName

여러 가지 방법이 있지만 이 방법은 정말 간단하다고 생각합니다.



답변자 : Brad Parks


여기에 있는 답변을 바탕으로 이 프로세스를 간단한 Bash 스크립트로 래핑했습니다. 물론 Git 별칭으로도 사용할 수 있습니다.

나에게 중요한 추가 사항은 커밋하기 전에 단위 테스트를 실행하라는 메시지를 표시하고 기본적으로 현재 분기 이름을 전달한다는 것입니다.

 $ git_push_new_branch.sh Have you run your unit tests yet? If so, pass OK or a branch name, and try again usage: git_push_new_branch {OK|BRANCH_NAME} eg git_push_new_branch -> Displays prompt reminding you to run unit tests git_push_new_branch OK -> Pushes the current branch as a new branch to the origin git_push_new_branch MYBRANCH -> Pushes branch MYBRANCH as a new branch to the origin

git_push_new_branch.sh

 function show_help() { IT=$(cat <<EOF Have you run your unit tests yet? If so, pass OK or a branch name, and try again usage: git_push_new_branch {OK|BRANCH_NAME} eg git_push_new_branch.sh -> Displays prompt reminding you to run unit tests git_push_new_branch.sh OK -> Pushes the current branch as a new branch to the origin git_push_new_branch.sh MYBRANCH -> Pushes branch MYBRANCH as a new branch to the origin ) echo "$IT" exit } if [ -z "$1" ] then show_help fi CURR_BRANCH=$(git rev-parse --abbrev-ref HEAD) if [ "$1" == "OK" ] then BRANCH=$CURR_BRANCH else BRANCH=${1:-$CURR_BRANCH} fi git push -u origin $BRANCH


답변자 : Eugene Yarmash


유연성을 최대화하기 위해 사용자 지정 Git 명령을 사용할 수 있습니다. 예를 들어 $PATH git-publish 라는 이름으로 다음 Python 스크립트를 만들고 실행 가능하게 만드십시오.

 #!/usr/bin/env python3 import argparse import subprocess import sys def publish(args): return subprocess.run(['git', 'push', '--set-upstream', args.remote, args.branch]).returncode def parse_args(): parser = argparse.ArgumentParser(description='Push and set upstream for a branch') parser.add_argument('-r', '--remote', default='origin', help="The remote name (default is 'origin')") parser.add_argument('-b', '--branch', help='The branch name (default is whatever HEAD is pointing to)', default='HEAD') return parser.parse_args() def main(): args = parse_args() return publish(args) if __name__ == '__main__': sys.exit(main())

그런 다음 git publish -h 사용 정보를 표시합니다.

 usage: git-publish [-h] [-r REMOTE] [-b BRANCH] Push and set upstream for a branch optional arguments: -h, --help show this help message and exit -r REMOTE, --remote REMOTE The remote name (default is 'origin') -b BRANCH, --branch BRANCH The branch name (default is whatever HEAD is pointing to)


답변자 : Devin Rhode


이것이 가장 간단한 별칭이라고 생각합니다. ~/.gitconfig

 [alias] publish-branch = !git push -u origin $(git rev-parse --abbrev-ref HEAD)

당신은 그냥 실행

 git publish-branch

그리고 ... 분기를 게시합니다.



답변자 : Hitesh Sahu


로컬 변경 사항을 새 기능 분기로 푸시하기 위한 전체 Git 워크플로는 다음과 같습니다.

모든 원격 분기를 가져옵니다.

 git pull --all

지금 모든 지점 나열

 git branch -a

체크아웃 또는 브랜치 생성( <feature branch> 를 브랜치 이름으로 대체):

 git checkout -b <feature branch>

현재 분기를 보여줍니다. * 앞에 표시해야 함

 git branch

로컬 변경 사항을 추가하십시오(.는 여기에 의도된 것입니다).

 git add .

이제 변경 사항을 커밋합니다.

 git commit -m "Refactored/ Added Feature XYZ"

중요: 마스터에서 업데이트 받기:

 git pull origin feature-branch

이제 로컬 변경 사항을 푸시합니다.

 git push origin feature-branch


출처 : Here


출처 : http:www.stackoverflow.com/questions/2765421/how-do-i-push-a-new-local-branch-to-a-remote-git-repository-and-track-it-too">

반응형