분기를 전환 할 수없는 이유는 무엇입니까?


81

git에서 분기를 전환하려고하는데이 오류 메시지가 나타납니다.

error: you need to resolve your current index first

xcode4에서 git을 사용하고 있습니다.

git status
# On branch DateCode
# Unmerged paths:
#   (use "git reset HEAD <file>..." to unstage)
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#   both modified:      Whereami.xcodeproj/project.xcworkspace/xcuserdatauser.xcuserdatad/UserInterfaceState.xcuserstate
#
no changes added to commit (use "git add" and/or "git commit -a")
Frappuccinos-MacBook-Pro:whereami

# 병합되지 않은 경로 : # ( "git reset HEAD <file> ..."을 사용하여 스테이지를 해제) # (해상도를 표시하려면 "git add / rm <file> ..."을 적절하게 사용) #
lampShade

해당 정보를 붙여 넣으려면 질문을 수정하세요. 댓글에서 읽을 수 없습니다.
Mat

git reset {{currentBranchName}}다음 git checkout . 문제를 해결합니다
muthukumar selvaraj

답변:


95

git 상태에 나열된 병합을 원하지 않는 경우 이것을 시도하십시오.

git reset --merge

이 재설정 인덱스 사이 다른 작업 트리에서 업데이트 파일을 <commit>하고 HEAD있지만 (추가되지 않은 변경 사항이 즉) 인덱스와 작업 트리 사이 다른 것들을 유지합니다.

<commit>와 인덱스 사이에 다른 파일이 준비되지 않은 변경 사항이있는 경우 재설정이 중단됩니다.

이에 대한 추가 정보 -https : //www.techpurohit.com/list-some-useful-git-commands 및 Doc 링크-https: //git-scm.com/docs/git-reset


53

병합으로 인해 충돌이 발생한 경우 both modified출력에서로 끝납니다 git status. git은 이러한 충돌을 해결할 때까지 분기를 변경할 수 없습니다. 해당 파일을 편집하면 충돌 마커가 표시되어야합니다 . git 매뉴얼에 이러한 충돌을 해결하기위한 가이드가 있습니다 . (kernel.org가 현재 다운되었으므로 대신 여기에서 해당 가이드를 찾을 수 있습니다 .)

또는 병합이 실수라고 생각되면 다음을 사용하여 실행 취소 할 수 있습니다. git reset --merge


19

git이 미해결이라고 말하는 변경 사항에 신경 쓰지 않는다면 강제 체크 아웃을 할 수 있습니다.

git checkout -f {{insert your branch name here}}


3
이것이 바로 제가 필요로하는 것입니다. 많은 충돌로 인해 병합이 실패한 테스트 브랜치가 있었고 브랜치를 버리고 싶었습니다. 좋은 지점으로 돌아갈 수 없었습니다 (체크 아웃 실패 및 git reset --merge실패). 그러나 checkout -f훌륭하게 작동했습니다.
Chad

6

원격 및 색인에서 새 파일을 업데이트 할 때이 메시지가 표시됩니다. 인덱스 수정을 시도했지만 Xcode 4.5, GitHub.app (103) 및 GitX.app (0.7.1)을 통한 해결에 실패했습니다. 그래서 이렇게했습니다.

git commit -a -m "your commit message here"

git 인덱스를 우회하는 데 일했습니다.

Git 및 Xcode에 대해 이해하는 데 도움이 된 두 개의 블로그 게시물은 다음과 같습니다.

  • Xcode 4.5의 Ray Wenderlich
  • 2008 년 올리버 스틸


  • 6

    HEAD로 분기를 재설정 할 수 있습니다.

    git reset --hard branch_name
    

    그런 다음 분기를 가져오고 로컬에서 원격에 있지 않은 분기를 삭제합니다.

    git fetch -p 
    

    1

    분기를 전환하기 전에 저장되지 않은 변경 사항을 커밋하거나 제거해야합니다.

    Git은 저장되지 않은 변경 사항이 제거된다는 것을 의미하는 경우 분기를 전환 할 수 없습니다.


    오류와 git status출력은 이것이 분기 변경으로 인해 손실되는 작업 트리의 변경 사항이 아니라 병합이 실패하고 인덱스에서 충돌을 해결해야 함을 나타냅니다.
    Mark Longair

    1

    파일은 둘 다에 의해 수정되기 때문에 다음 방법으로 추가해야합니다.

    git add Whereami.xcodeproj/project.xcworkspace/xcuserdatauser.xcuserdatad/UserInterfaceState.xcuserstate
    

    또는 연간 변경 사항을 무시하려면 다음을 수행하십시오.

    git reset HEAD Whereami.xcodeproj/project.xcworkspace/xcuserdatauser.xcuserdatad/UserInterfaceState.xcuserstate
    

    그 후에 브랜치를 전환하면됩니다.

    당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
    Licensed under cc by-sa 3.0 with attribution required.