program story

git : 헤드를 분리하지 않고 분기 전환

inputbox 2020. 8. 27. 07:45
반응형

git : 헤드를 분리하지 않고 분기 전환


메인 브랜치 (마스터)와 일부 실험적인 작업을위한 브랜치가있는 github에 저장소가 있습니다. 나는 약간의 커밋을하고 실험적인 브랜치로 밀어 넣었고 모든 것이 잘되었습니다.

이제 다른 컴퓨터에서 내 저장소 (git clone repository )를 복제 한 다음 실험용 브랜치 (git checkout branchname ) 로 전환하려고 하지만이 작업을 수행 할 때마다 머리가 분리되고 변경 사항을 푸시 할 수 없습니다. 내가 뭘 잘못하고 있죠? 나는 어딘가에 근본적인 자식 개념을 놓치고 있다는 느낌이 들지만 임의의 자식 맨 페이지를 읽는 것은 나에게 단서를주지 못한다.

나는 git을 처음 접했기 때문에 내가 바보라면 미안하지만 문서에서 내 머리를 다시 붙이는 데 도움이되는 것을 찾을 수 없습니다.

편집하다

추적 지점의 개념은 내가 놓친 것입니다. 이제 그 개념을 이해 했으므로 모든 것이 명확합니다. 개인적으로 나는 git branch --track구문이 git checkout -b branch-name origin/branch-name.

도와 주셔서 감사합니다!


# first time: make origin/branchname locally available as localname
git checkout -b localname origin/branchname 

# othertimes 
git checkout localname 

git push origin

편의상 localname 및 branchname에 동일한 문자열을 사용할 수 있습니다.
체크 아웃 origin/branchname실제로 브랜치를 체크 아웃하지 않았습니다. origin/branchname"원격"이름이며 다음을 사용하여 목록을 얻을 수 있습니다.

branch -a 

색상을 활성화하면 로컬 분기는 하나의 색상이되고 원격 분기는 다른 색상이됩니다.

스위치로 전환하여 작업 할 수 있으려면 먼저 원격 분기를 로컬로 추적해야합니다.


git clone git@github.com:abc/def.git
cd def

이제 추적 분기를 만듭니다.

git branch --track experimental origin/experimental
git checkout experimental

그런 다음 거기에서 일한 후 간단히 github로 푸시하십시오.

git push

Kent의 답장을 확장하려면 복제를 수행 한 후 (원격은 포함되지 않음) 복제 한 저장소에서 활성화 된 분기 (귀하의 경우 마스터) 만 가질 수 있습니다.

따라서 먼저 원격 실험 브랜치를 추적하기 위해 새 브랜치를 생성해야합니다.

$ git branch experimental origin/experimental

그런 다음 확인하십시오.

$ git checkout experimental

그러나 Kent는 정확합니다.이 두 명령을 결합 할 수 있습니다.

$ git checkout -b experimental origin/experimental

Git 2.23 (2019 년 8 월)에서는 다음 명령을 사용합니다.git switch

동일한 이름의 원격 지점이있는 경우 자동으로 추적됩니다.

$ git switch new-topic
Branch 'new-topic' set up to track remote branch 'new-topic' from 'origin'
Switched to a new branch 'new-topic'

참고 URL : https://stackoverflow.com/questions/471300/git-switch-branch-without-detaching-head

반응형