힘내 병합 오류


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 mergeerror: you need to resolve your current index first병합가 해당 파일의 충돌이있다, 그 실패했음을 나타냅니다. 병합하려는 것이 무엇이든 결국 나쁜 생각이라고 결정한 경우 다음을 사용하여 일을 정상적으로 되돌릴 수 있습니다.

git reset --merge

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


두 가지 기술 중 하나를 사용하여 처리 한 후에는 9-sign-in-out지점 을 체크 아웃 할 수 있어야합니다 . 단지 이름 변경에 대한 문제 당신 9-sign-in-outmaster에 제안, 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.