2011-01-16 7 views
44

나는 힘내를 사용하고 있으며 저장소에 추가 한 파일의 이름을 수동으로 바꿨다. 이제 저장소에 이름을 변경 한 "새"파일을 추가했지만 "이전"파일이 삭제되었다는 불평을합니다. 어떻게하면 Git이 이전 파일을 잊어 버릴 수 있습니까? 더 나은 방법은, "새로운"파일이 실제로 "새로운"파일이라는 것을 Git에게 알려서 변경 기록을 그대로 유지할 수있게하는 방법은 무엇입니까? 파일 이동 힘내를 사용힘내 : 수동으로 이름이 변경된 파일, 힘내 이혼

$ git reset path/to/newfile 
$ mv path/to/newfile path/to/oldfile 

을 다음 :

+3

'git mv old new '는 근본적으로'git rm --cached old; mv old new; git add new', 약간의 영리함이 추가되었습니다. 힘내는 유사한 내용을 찾아서 이름을 밝혀 내기 때문에'git mv'를 사용했는지 여부를 감지합니다. 즉, 두 파일이 일치한다는 것을 알 수있는 방법이 없습니다. – Cascabel

+0

[git mark를 삭제 된 상태로 만들고 새 파일을 파일로 이동하는 방법은?] (http://stackoverflow.com/questions/433111/how-to-make-git-mark-a-deleted-and) -a-new-file-as-a-file-move) –

답변

6

먼저, 당신은 수동으로 이동 파일에 대한 추가 공연 취소 물론

$ git mv path/to/oldfile path/to/newfile 

을 이미 수동 이동을 저지른 경우, 대신 이동하기 전에 리비전으로 재설정하고 그 다음에 간단히 git mv을 원할 수 있습니다.

+2

마지막 명령에서 오류가 발생했습니다. 치명적 : 버전 제어가 없습니다 – mmersz

+0

그냥 마지막 명령 앞에 oldfile을 추가하십시오. 감사합니다! – mmersz

2

이 시도 : 아무 문제가 없습니다

mv new old 
git rm new 
git mv old new 
+0

이것은 작동하지 않습니다. 힘내는 여전히 파일의 이름이 변경됨으로 표시하지 않습니다. –

39

. 단순히 git rm old 또는 심지어 git add -A 그리고 이름이 변경되었음을 알게 될 것입니다. 자식은 이름 바꾸기와 같은 내용으로 삭제와 더하기를 볼 수 있습니다.

git mv 등을 사용하여 실행 취소, 실행 취소 할 필요가 없습니다. 의 경우에만 git mv old new은 짧은 핸드입니다.

+9

이전 파일이 이미 사라진 경우 작업 트리에 제거 할 파일이 없으므로'git rm --cached old'를 사용해야합니다. – Cascabel

+1

파일을 옮겨서 몇줄을 변경했다면'git add -A'? Git은 _similar_ 파일이 이전 파일과 동일하다는 것을 알기에 충분히 똑똑합니까? – Phil

+2

@ 필 예. 시도 해봐. –

0

이 오류가 발생하면 이동하려는 파일이 원래 git에 의해 추적되지 않았거나 파일을 이동하려는 디렉토리가 추적 된 디렉토리가 아니라는 것을 의미합니다.