2011-09-28 4 views
30

프로젝트에서 서브 모듈을 사용하기 때문에 "자주 사용하지 않습니다"라는 것을 자주 발견하게됩니다. 내가 그 서브 모듈에 코드를 추가하고 있기 때문에 거기에서 커밋하고 있습니다. 그런 다음 해당 서브 모듈을 밀어 넣기를 원할 때 나는 한 지점에 있어야합니다. 따라서 내 질문 : 힘내 : 현재 참조로 분기 설정

가 자식 (명령 행)의 방법/바로 가기가 거기에 더 정확하게는

git checkout the_branch 
git reset --hard <previous commit-ish> 

의 우회하지 않고 현재 커밋/HEAD에 현지 지점을 설정, 내 진짜 문제 위의 "우회로"와 함께 내가 일시적으로 원래의 HEAD에 checkout-command를 남겨두고 있다는 것입니다. 이것은 git branch -f 명령으로 피할 수 있습니다 (CharlesB에게 감사).

답변

39

-B으로 브랜치를 체크 아웃합니다. 그러면 브랜치가 현재 참조 인 HEAD로 재설정됩니다. 에서

git checkout -B <branch> 

docs :

-B가 주어진다면 존재하지 않는 경우, 생성된다; 그렇지 않으면 재설정됩니다. 이것은 "자식 체크 아웃"성공하지 않는 한, 분기 생성/초기화되지 않습니다 말을하는 것입니다

$ git branch -f <branch> [<start point>] 
$ git checkout <branch> 

의 트랜잭션에 해당합니다.

+3

이제 "branch -f"명령이 내가 찾고있는 것임을 알았습니다. 내 실제 문제는 내가 현재 앉아있는 커밋을 "떠나"싶지 않기 때문입니다. 감사. –

+1

공식 문서에 링크 : https://git-scm.com/docs/git-checkout#git-checkout-emgitcheckoutem-b-Bltnewbranchgtltstartpointgtgt –

16
git checkout -B the_branch HEAD 

the_branch 전에 다른 곳에서 지적해도, the_branch가에서 HEAD 커밋 체크 아웃됩니다. 그것은 마지막 몇 가지 git 릴리즈 중 하나에 추가되었으므로 사용할 수 없을 수도 있습니다. 다른 경로는 git branch -D the_branch && git checkout -b the_branch

+0

git 버전 1.7.0.4를 사용하고 있으며 checkout -B가 아직 존재하지 않습니다. 그러나 그것이 미래에있을 것이라는 것을 보는 것이 좋다. –

관련 문제