동일한 이름의 파일이 있는 경우 분기 변경
gitrepo에 xyz라는 파일이 있습니다.공교롭게도 xyz라는 지점도 가지고 있습니다.현재 마스터 상태인데 xyz 지점으로 체크아웃하려고 합니다.사용할 명령은 간단합니다.
$ git checkout xyz
하지만 이렇게 하면 파일을 확인할 수 있습니다.xyz
현 단장에게지점을 지점으로 변경하려면 어떻게 해야 합니까?xyz
?
commit a47faf(git 1.8.4.3+)에서 알 수 있듯이 다음을 시도할 수도 있습니다.
git checkout xyz --
(참고: 2019년 1분기 Git 2.21에서 오류 메시지가 더 명확해질 것입니다.)
그렇게 되면 분명히 알 수 있을 것입니다.xyz
commit이고, 뒤의 은 commit입니다.--
경로여야 합니다(여기서는 경로가 제공되지 않음).이중 하이픈 컨벤션에 대해 자세히 알아보십시오.
만약 당신이 '를 빼고 시도한다면,--
"git checkout이 새 추적 분기를 만들지 않는 이유는 무엇입니까?"에 나와 있는 것처럼 작동하거나 작동하지 않을 수 있습니다.":
git checkout name
실행:실행:
- 로컬 분기 또는 명시적 원격 분기인 경우 전환합니다.
- 추적된 경로인 경우 재설정합니다.
- 원격 분기인 경우 추적 분기를 생성하고 전환합니다.
그리고 그것의 행동이 항상 같지는 않습니다. '러므로그'는--
명확한 모호성을 제공하기 위해.
2019년 8월 업데이트, Git 2.23+
git checkout
너무 혼란스럽고 다음으로 대체됨:
git switch
의미git switch xyz
합니다.xyz
,git restore
의미git restore xyz
합니다.xyz
.
또한 "내 깃이 왜 분리된 HEAD 상태에 들어갔을까?"에서 설명했듯이 더 이상 예상치 못한 분리된 HEAD는 없습니다.
VonC의 솔루션이 작동하는 동안 구문을 절대 기억할 수 없기 때문에 일반적으로 더 낮은 기술의 솔루션을 사용합니다.
$ (cd somedir && git checkout my-branch)
또는 하위 디렉터리가 없는 경우:
$ (cd .git && git -C .. checkout my-branch)
기억하기 쉽고 효과도 있습니다 ;-)
Git 2.21(2019년 1분기, 4년 이상 후)은 오류 메시지를 명확히 하고 제안을 할 것입니다.
"git checkout frotz
(frotz
처음에 제안한 더블 대시 없이) "를 수정 및 경로로 동시에 해석할 수 없도록 함으로써 모호성을 피합니다.
은 고유 지점인 '원격 추적 지점할 수 되었습니다.frotz
원격에서, 로컬 분기를 만들기 위해 수영을 할 때'를 생성할 때frotz
원격으로frotz
참고: "dwim"(아래에 사용됨)은 컴퓨터 시스템이 사용자가 의도하는 바를 예측하려고 할 때 사용자의 명시적이지만 잠재적으로 잘못된 입력을 맹목적으로 실행하는 것이 아니라 사소한 오류를 자동으로 수정하는 "dwim"입니다.
Nguyễn Thai Ngọc Duy()pclouds
의 commit be4908f(2018년 11월 13일)를 참조하십시오.
(주니오 C 하마노에 의해 합병 -- -- 커밋 8d7f9db, 2019년 1월 4일)
checkout
및 dwim을 하게 지정합니다.
commit 70c9ac2에서 체크아웃 dwim을 추가하면 특정 조건이 충족될 때만 dwim으로 제한되고 그렇지 않을 경우 기본 체크아웃 동작으로 돌아갑니다.
뒤로 넘어지는 것은 혼란스러울 수 있습니다.
돌아야 할 조건 중 하나.
git checkout frotz
로.
git checkout -b frotz origin/frotz
은 것은입니다.
frotz
파일로 존재해서는 안 됩니다." 지만사용기가대되면게하하자▁"▁""를 ,
git checkout frotz
기를작니다합분성다▁the▁"▁branch"를 만듭니다.frotz
"그고우라연히이있파습다니일이의름는리▁"▁named▁file다그있라▁and니▁happens"라는 파일이 .frotz
git이 조용히frotz
되돌리고 있습니다." 파일 내용이 도움이 되지 않습니다.
이것은 Git 메일링 목록에 보고되며 다른 곳에서는 "Git is bad"의 예로 사용되기도 합니다.우리는 보통 옳은 일을 하려고 노력하지만, "옳은 일"이 여러 개 있을 때는 사용자의 결정에 맡기는 것이 가장 좋습니다.
이 경우를 확인하고 사용자에게 명확한 설명을 요청합니다.
- "
git checkout -- foo
를 합니다.- "
git checkout foo --
하고 분기 dwim을사분수행합니다를기여하용"를 합니다.foo
" 6않는 는 dwim을 합니다.
--no-guess
이런 에는 "어쩔 수가 없어요 때문에 왜냐하면 "git checkout --no-guess foo --
그냥 실패할 것입니다.
하지만 스크립트에 사용될 수 있습니다.
현재 man 페이지에는 다음이 포함됩니다.
--no-guess:
같은 이름의 원격 추적 분기가 있는 경우 분기를 만들지 마십시오.
Git 2.26(2020년 1분기) 이전에는 git checkout X
""가 다음과 같은 경우에 올바르게 실패하지 않았습니다.X
로컬 분기가 아니지만 둘 이상의 원격 동기화된 분기 이름을 지정할 수 있습니다(즉, 해당 로컬 분기를 만드는 시작점으로 흐림). 이는 수정되었습니다.
commit fa74180, 2957709 (2019년 12월 30일)SyntevoAlex
by 알렉산드르 밀로슬라프스키() 참조.
(Junio C Hamano에 의해 합병됨 -- -- commit0e70cd, 2020년 2월 5일)
checkout
모호한 추적 분기의 파일을 되돌리지 않음사인 오프 바이: 알렉산드르 밀로슬라프스키
이해하기 쉽도록 기존의 양호한 시나리오는 다음과 같습니다.
- 파일 없음'
foo
로컬 분기 없음'foo
단일 원격 지점 'foo
'git checkout foo
지점을 합니다.foo
위의 commit 70c9ac2를 참조하십시오. 여기서 설명합니다.그리고.
- 파일 있음'
foo
로컬 분기 없음'foo
단일 원격 지점 'foo
'git checkout foo
불평할 것입니다. 위의 커밋 be4908f를 참조하십시오.이 패치는 다음 시나리오를 방지합니다.
- 파일 있음'
foo
로컬 분기 없음'foo
및 여러 원격 지점'foo
'git checkout foo
성공적으로...파일의 .foo
!다른 크게 못할 수 .", " 다 원 추 즉 동 며 변 을 가 하 격 면 기 른 놀 야 해 일 최 수 있 껏 사 이 못 경 눈 습 니 다 가 지 할 채 자 치 용 우 며 의 악 이 는 라 작 운 이 경 갑 되 자 기 크 게 ▁that 즉 ▁suddenly ▁at , ▁by
위의 commit be4908f를 참조하십시오. 이것은 실제 세계에 불만을 제기합니다.내가 이해하기로는 위의 commit be4908f에 수정을 가했고(여기서 논의됨), 여러 원격의 경우를 간과했으며, 파일을 되돌리는 전체 동작은 결코 의도되지 않았습니다.
위의 commit 70c9ac2는 예상치 못한 동작을 유발합니다.
이전에는 not-a-ref에서 pathspec으로의 폴백이 있었습니다.이것은 합리적인 예비군입니다.
그 다음에는 모호한 원격에서 경로 지정으로 폴백이 있습니다.
저는 그것이 복사&붙여넣기의 실수였다는 것을 이해합니다.여기서 설명한 "여러 원격으로 체크아웃할 수 없습니다"의 ad8d510을 커밋합니다. 예상치 못한 동작을 알아차렸지만 패치 시리즈의 목표가 다른 것에 초점을 맞추고 있었기 때문에 금지하는 대신 세미 문서화를 선택했습니다.
위의 추가 사항들 위의 be4908f를 커밋합니다.
die()
분기와 파일 사이에 모호성이 있는 경우.
여러 개의 추적 지점의 경우는 겉보기에 간과되고 있습니다.새로운 동작: 로컬 지점과 여러 원격 후보자가 없는 경우 파일이 존재하는지 여부에 관계없이 파일을 되돌리려 하지 않습니다(예상치 못한 경우 방지)(오류 메시지 개선).
Git 2.30(git checkout
(man)2021년 1분기)을 사용하여 "구성 변수를 사용하고 활성화/비활성화하는 방법을 배웠습니다.--[no-]guess
옵션을 선택합니다.
커밋 64f1f58(2020년 10월 7일) 및 커밋 ef09e7d(2020년 10월 6일)를 참조하십시오.Denton-L
(주니오 C 하마노에 의해 합병 -- -- 0e41cfa 커밋, 2020년 10월 27일)
존경하는 법을
checkout
배우다checkout.guess
사인 오프 바이: 덴튼 리우
현재
git checkout/switch
은 것은입니다.--guess
는 현재 기본적으로 활성화되어 있습니다.
그러나 일부 사용자는 이 작업이 자동으로 수행되지 않기를 원할 수 있습니다.
로 사자가록강대신는제하를 지정하는--no-guess
으로 이 줍니다.checkout.guess
사용자에게 기본 동작을 설정할 수 있는 옵션을 제공하는 구성 변수입니다.완료 스크립트에 새 구성 변수를 인식하도록 가르치고 False로 설정된 경우 DWIM 로직을 비활성화합니다.
git config
이제 관리 페이지에 다음 항목이 포함됩니다.
checkout.guess
제다니합공값의 합니다.
--guess
또는--no-guess
할 수 있습니다.git checkout
그리고.git switch
및 참조.
git checkout
이제 관리 페이지에 다음 항목이 포함됩니다.
--guess
기본 동작입니다. 사용--no-guess
사용하지 않도록 설정합니다.은 기동은 설수있다니습할을 할 수 .
checkout.guess
구성 변수입니다.
git switch
이제 관리 페이지에 다음 항목이 포함됩니다.
은 기동은 설수있다니습할을 할 수 .
checkout.guess
구성 변수입니다.
틀려요.그것은 xyz 지점을 체크아웃 할 것입니다.
인 파을체하려명사합니다야용해를 사용해야 합니다.git checkout -- xyz
동일한 이름의 분기가 없는 경우 파일에 대한 바로 가기만 허용합니다.
» git checkout --help
상세한 것은
언급URL : https://stackoverflow.com/questions/25322335/git-change-branch-when-file-of-same-name-is-present
'sourcetip' 카테고리의 다른 글
Python의 역사전 조회 (0) | 2023.08.11 |
---|---|
비계층 데이터에 대한 오라클 계층 쿼리 (0) | 2023.08.11 |
사전 인증 목적인증봄 보안의 토큰? (0) | 2023.08.11 |
jquery가 로드되었는지 확인한 후 false이면 로드합니다. (0) | 2023.08.11 |
Powershell을 사용하여 바로 가기(.lnk) 속성 편집 (0) | 2023.08.11 |