힘내 병합 오류


264

9-sign-in-out완벽하게 작동하는 코드로 불리는 git 브랜치를 가지고 있으며 마스터로 바꾸고 싶습니다. 저는 현재 마스터 지점에 있습니다.

$ git branch
9-sign-in-out
* master

9-sign-in-out지점 으로 전환하려고하는데 다음을 허용하지 않습니다.

$ git checkout 9-sign-in-out
app/helpers/application_helper.rb: needs merge
config/routes.rb: needs merge
error: you need to resolve your current index first

모든 마스터 분기 오류를 무시하고 9-sign-in-out분기를 마스터로 전환하려면 어떻게해야합니까? 어쩌면 git rebase ? 그러나 9-sign-in-out지점 에서 코드를 잃고 싶지 않습니다 .


9-sign-in-out에서 커밋되지 않은 코드를 잃고 싶지 않다는 의미입니까?
— Mauvis Ledford

@ Mauvis : 나는 이미 9-sign-in-out 지점에서 코드를 커밋했습니다.
— Sayanee

답변:


531

- 그 오류 메시지의 의미를 이해하고 그것의 가치 needs merge와 error: you need to resolve your current index first병합가 해당 파일의 충돌이있다, 그 실패했음을 나타냅니다. 병합하려는 것이 무엇이든 결국 나쁜 생각이라고 결정한 경우 다음을 사용하여 일을 정상적으로 되돌릴 수 있습니다.

git reset --merge

그러나 그렇지 않으면 git manual에 설명 된대로 이러한 병합 충돌을 해결해야합니다 .


두 가지 기술 중 하나를 사용하여 처리 한 후에는 9-sign-in-out지점 을 체크 아웃 할 수 있어야합니다 . 단지 이름 변경에 대한 문제 당신 9-sign-in-out에 master에 제안, wRAR의 대답은 당신이 누구와 이전 마스터 분기를 공유 한 경우,이 두 가지의 역사는 갈라 경우 때문에, 당신은 다시 게시됩니다, 그들을 위해 문제를 만드는 것입니다 역사.

기본적으로 원하는 것은 토픽 브랜치 9-sign-in-out에 토픽 브랜치를 병합 master하지만 토픽 브랜치 의 파일 버전을 정확하게 유지하는 것입니다. 다음 단계를 수행하면됩니다.

# Switch to the topic branch:
git checkout 9-sign-in-out

# Create a merge commit, which looks as if it's merging in from master, but is
# actually discarding everything from the master branch and keeping everything
# from 9-sign-in-out:
git merge -s ours master

# Switch back to the master branch:
git checkout master

# Merge the topic branch into master - this should now be a fast-forward
# that leaves you with master exactly as 9-sign-in-out was:
git merge 9-sign-in-out

1
마크, 나는 이제 다시 병합 오류가 발생한 후 당신이 무슨 말을하는지 이해했습니다. 그러나이 오류가 있습니다. 브랜치를 전환하기 전에 변경 사항을 저장하거나 숨 깁니다. 중단 : : : : : : : : : : : : : : : : 어떤 방법으로 지점에서 webrat.log를 사용하여 마스터와 병합합니까?
— Sayanee

1
@ Sayanee : 그것은 다른 상황에서 발생하는 다른 오류이며, 혼란 스럽다면 새로운 질문을하는 것이 좋습니다. (Briefly, git은 커밋되지 않은 변경 사항을 덮어 쓰기 때문에 분기를 전환하지 못하게합니다 webrat.log.)
— Mark Longair

나는 모든 것을 rm하고 복제했다. 그러나 이것은 더 좋습니다.
— sudo

43
git checkout -f 9-sign-in-out # change branch, discarding all local modifications
git branch -M master # rename the current branch to master, discarding current master

3
체크 아웃을 강제하는 대신 Mark가 제안한 것처럼 병합을 재설정하는 것이 훨씬 깨끗하다고 ​​생각합니다.
— 토마스

8

에서 제안 git status,

Unmerged paths:                                                                                                                                
(use "git add <file>..." to mark resolution)                                                                                                 

    both modified:   a.jl                                  
    both modified:   b.jl

나는 git add병합을 마치고 git checkout잘 작동했습니다.



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