2013-08-13 4 views
2

완전히 이상한 이유로 저는 git 저장소에 혼합 라인 엔딩 파일이 있습니다. 때문에 그 라인 엔딩에 내가하려고하면 실패 커밋 체리 - 선택 (. 적어도 그 git diff 주장이 모든 커밋은 true로 설정 core.autocrlf 옵션을 수행 하는데도 불구하고 무엇인가) : 당신이 할 수git cherry-pick을 선택하고 eol 유형을 무시하십시오.

$ git status 
# On branch master 
nothing to commit, working directory clean 
$ git cherry-pick 77fe281 
error: could not apply 77fe281... TFS changeset 9148 
hint: after resolving the conflicts, mark the corrected paths 
hint: with 'git add <paths>' or 'git rm <paths>' 
hint: and commit the result with 'git commit' 
$ git status 
# On branch master 
# You are currently cherry-picking. 
# (fix conflicts and run "git commit") 
# 
# Changes to be committed: 
# 
#  modified: some/other/file.txt 
# 
# Unmerged paths: 
# (use "git add <file>..." to mark resolution) 
# 
#  both modified:  Builds/rakefile.rb 
# 
$ cat Builds/rakefile.rb |grep "<<<" 
<<<<<<< HEAD 
$ git cherry-pick --abort 

Builds/rakefile.rb 파일에 충돌이 있습니다. BTW, 자식은 그 두 파일에있는 모든 라인은 아마 그 다른 라인 엔딩으로 인해 주장하고있다. 하지만 적어도 여기에는 일관성이 있습니다.

그러나 무시-모든 공간을 옵션으로 같은 시도 할 수 있습니다 :

여기
$ git status 
# On branch master 
nothing to commit, working directory clean 
$ git cherry-pick 77fe281 --strategy recursive -Xignore-all-space 
error: addinfo_cache failed for path 'Builds/rakefile.rb' 
U  Builds/rakefile.rb 
error: 'commit' is not possible because you have unmerged files. 
hint: Fix them up in the work tree, 
hint: and then use 'git add/rm <file>' as 
hint: appropriate to mark resolution and make a commit, 
hint: or use 'git commit -a'. 
fatal: Exiting because of an unresolved conflict. 
$ git status 
# On branch master 
# You are currently cherry-picking. 
# (fix conflicts and run "git commit") 
# 
# Changes to be committed: 
# 
#  modified: some/other/file.txt 
# 
# Unmerged paths: 
# (use "git add <file>..." to mark resolution) 
# 
#  both modified:  Builds/rakefile.rb 
# 
$ cat Builds/rakefile.rb |grep "<<<" 
$ 

자식은 파일을 병합 할 수 있다고 주장하지만, 파일이 실제로 병합 (정확하게!). 내가 도대체 ​​뭘 잘못하고있는 겁니까?

:하지만 단지 다른 사람을 위해, 그것은 충돌이라고 생각하는 이유가 응답하지 않습니다

답변

1

(폭언 자식이 실제로 우리가 1960 년대에있는 것처럼 나를 EOL 돌봐 강제 최초의 VCS입니다) 사람 수도 당신이 무엇을 제안 체리 픽과 라인 엔딩을 무시하는 방법을 궁금해 수 :

git cherry-pick a1b2c3d --strategy recursive -Xignore-all-space

은 내가 찾던 정확히했다.

+1

비슷한 문제가 발생했지만'ignore-all-space'가 제대로 작동하지 않았습니다. 나는'renormalize '를 지정해야했고, 그것은 트릭을했다. – Timothy