programing

다른 가지를 잡아당기다

bestprogram 2023. 7. 16. 13:47

다른 가지를 잡아당기다

분기에서 작업 중인데 다른 분기를 내 분기로 병합해야 한다는 것을 알게 되면 현재 워크플로우가 여기에 있습니다(예를 들어, 내 분기에서 작업 중이며 마스터에서 병합하려고 합니다).

git stash
git checkout master
git pull
git checkout my-branch
git merge master
git stash pop

현재 체크아웃된 것 외에 가지를 당기는 방법이 있습니까, 아니면 더 좋은 방법이 있습니까?

예를 들어, 제가 할 수 있는 일은 다음과 같습니다(다시 한 번 말씀드리지만, 제가 지점에 있고 병합하고 싶습니다).master):

git pull master
git merge master

깃풀맨 페이지에는 깃풀은 get fetch에 이어 깃 머지라고 되어 있는데, 현재 체크아웃된 것 외에 가지에 깃풀의 병합 부분을 할 수 있는 방법이 있습니까?

아니면 제가 요청하는 것이 불가능한가요?

나는 나에게 효과적인 git 명령어를 찾았습니다.

가지고 오다

git fetch origin master:master

위의 구문은 다음과 같습니다(고맙습니다 @Adam).

git fetch <remote> <src>:<dst>

병합

그런 다음(바로 병합하려는 경우):

git merge master

다음을 사용하여 동일한 리포지토리의 다른 분기에서 변경 사항을 가져올 수 있습니다.git pull다음과 같은 명령:

$ git pull origin <target-branch>

참조EXAMPLES의 일부.man git-pull:

   •   Merge into the current branch the remote branch next:

           $ git pull origin next

사용해 보십시오.

git pull yourRepositoryName master

branch1에서 branch2로 변경 내용을 끌어옵니다.

다음 분기가 있다고 가정합니다.

  • 마스터.
  • 지점1
  • 지점2

따라서 branch1에서 branch2로 변경 사항을 적용하려고 합니다.다음은 수행할 수 있는 작업입니다.

git checkout branch2
git pull origin branch1

다음을 시도할 수도 있습니다.

git fetch
git merge origin/master

로컬은 업데이트되지 않습니다.master포인터, 그러나 최신 포인터를 병합합니다.origin/master현재 지역 지점으로 이동합니다.

일반적으로 "master", "develople" 또는 "release/*"와 같은 일부 원격 분기를 "feature/*" 분기에 병합하는 경우 가장 좋은 전략은 병합이 아니라 원격 분기를 기반으로 하는 것입니다.그러면 해당 지점의 커밋이 다른 지점 기록의 맨 위에 적용됩니다.나중에 이 원격 분기로 빠르게 병합할 수 있습니다.

git pull origin master
git rebase master

확실한 방법은 다음과 같습니다.

git checkout master
git pull --ff origin master
git checkout devel
# git merge --ff devel

그래서 가명이 있습니다.

git config --global alias.update-branch '! bash -c "X1=\`git symbolic-ref HEAD 2> /dev/null | cut -b 12-\`; echo pulling branch $1 ... && git checkout $1 && git pull --ff origin $1 && git checkout \$X1 "'

# call it from 'devel' branch:
git update-branch master

마스터를 지금 현재 분기에 병합하는 것과 같이 사용자의 규칙을 준수하도록 개선할 수 있습니다.

1단계:

git checkout yourBranch

2단계:

git fetch origin master

3단계:

git pull origin master

만약 당신이 한 LOCAL 지점에서 다른 LOCAL 지점으로 이동해야 한다면, 이것이 저에게 도움이 되었습니다.다음 예를 들어 보겠습니다.

$ git branch
  master
  branch1 

branch1에서 버그 수정을 수행하여 branch2라는 이름의 새 branch를 만들고 로컬 repo로 가져와야 한다고 상상해 보십시오.

원격 트리:

            C0    C1    C2
Master      x------x
                   |
Branch1            x-----x
                   |
Branch2            x-----x

로컬의 트리:

            C0    C1    C2
Master      x------x
                   |
Branch1            x-----x
                   |
Branch2            x-----x

branch2에 체크아웃하는 것을 잊어버리고 branch1에 버그 수정을 했는데, 이제 다음과 같이 보입니다.

원격 트리:

            C0    C1    C2
Master      x------x
                   |
Branch1            x-----x
                   |
Branch2            x-----x

로컬의 트리:

            C0    C1    C2    C3
Master      x------x
                   |
Branch1            x-----x-----x
                   |
Branch2            x-----x

보시다시피 branch1은 우리가 필요로 하는 데이터를 가지고 있지만 원격이 아닌 로컬에만 있습니다.할 수 없습니다.

$ git pull origin branch1

할 일은 우가여해할일단지은야서입니다..

$ git checkout branch2
$ git pull . branch1     ✔️

이제 branch2에서 버그 수정을 볼 수 있습니다.그런 다음 branch1로 체크아웃하고 마지막 커밋을 되돌려서 아무도 당신의 실수를 알지 못하게 할 수 있습니다.이제 다음과 같이 보입니다.

원격 트리:

            C0    C1    C2
Master      x------x
                   |
Branch1            x-----x
                   |
Branch2            x-----x

로컬의 트리:

            C0    C1    C2    C3
Master      x------x
                   |
Branch1            x-----x
                   |
Branch2            x-----x-----x

받으시길 바랍니다 :)

언급URL : https://stackoverflow.com/questions/34344034/git-pull-on-a-different-branch