2014-02-10 2 views
3

나는 파일 이름의 경우 변경으로 구성되어 패치를 만들었습니다파일 이름 대소 문자가 변경된 Git에서 패치를 적용하는 방법은 무엇입니까?

git mv -f confvars.sh ConfVars.sh 
git commit -am 'test filename case change' 
git format-patch -M -1 HEAD 

을하지만 난 다음 시도하고 해당 패치를 적용 할 때, 나는 오류 얻을 :이 적용 할 수있는 방법을

git apply 0001-test-filename-case-change.patch 
> error: ConfVars.sh: already exists in working directory 

을 패치를 설치하지 않고 오류가 발생 했습니까?

** 수정 **

위의 예 명확히하기 : 파일 ConfVars.sh이 존재하지 않는 패치를 적용 할 때, 파일 confvars.sh이, 내가 이름을 바꿀 수 기대하는 대신 존재를 위의 오류를 표시합니다.

+0

이미 커밋이있는 저장소 또는 가능하면 ConfVars.sh 파일에 패치를 적용하려는 것 같습니다 다른 커밋에 의해 생성되었거나 작업 디렉토리에 커밋되지 않은 변경이나 커밋되지 않은 변경이있는 경우 ... – twalberg

+1

나는 생각하지 않습니다 -이 동작은 상태에 독립적입니다. d는 일반적인 형식으로 묻습니다. 패치에서 주어진대로 파일 이름 대소 문자를 어떻게 적용 할 수 있습니까? ConfVars.sh 파일이 존재하지 않는 위 예제를 명확히하기 위해 confvars.sh 파일 만 존재합니다. 이름이 바뀌면 위의 오류 메시지가 나타납니다. – Martyn

+0

어떤 플랫폼입니까? 실제로 파일 시스템이 대소 문자를 구분합니까 (예 : Linux), 아니면 NTFS/FAT (예 : Windows)와 같이 대소 문자가 아닌 파일 시스템입니까? – twalberg

답변

1

이것은 git-apply의 버그로 보입니다. 대소 문자를 구별하지 않는 파일 시스템에서 대소 문자를 변경하는 이름을 처리 할 수없는 버그입니다. 불행하게도 이것은 패치에 이름 바꾸기가 아닌 내용의 추가와 삭제가 포함되어있는 경우에도 마찬가지입니다. (. 그래서 git-format-patch-M 플래그를 생략하는 것은 도움이되지이다)

당신이 고통의 원하는 수준에 따라 세 가지 옵션이 보인다 :

  1. 는 대소 문자를 구분 파일 시스템에 패치를 적용하고 결과를 가져 저장소에 커밋하십시오. 패치를 수동으로 결과 파일 이름을 변경하면 저장소에 구별 될
  2. 편집 (예 TEMPORARY-FILE-CHANGE-ME에 대한), 다음 패치를
  3. 신고 버그를 적용한 후 당신이 원하는 무엇에 파일 이름을 변경하고 누군가가 실제로 충분한 관심 바랍니다 당신이 포기하고 저장소에서 이러한 변경을 수동으로 수행하기 전에 문제를 해결하십시오.
+0

그런데, 나는 이것이 리눅스에 있다는 당신의 의견을 알지 못했습니다; 대소 문자를 구별하는 파일 시스템에서 대소 문자를 바꾸는 이름 바꾸기가 제대로 작동하는 것 같습니다. 대소 문자를 구별하지 않는 파일 시스템을 사용하고 있습니까? USB 스틱이나 뭐? –