실수로 git repo에서 작업 영역 구성 파일을 추적했습니다. 문제를 해결하려고 시도하면 해당 파일이 git rm --cached
이고 .gitignore
파일에 추가되었습니다.git checkout gitignore에서 파일 삭제
이제 저장소에서 지점을 체크 아웃 할 때마다 해당 저장소가 삭제됩니다. 이것을 피할 수있는 방법이 있습니까?
실수로 git repo에서 작업 영역 구성 파일을 추적했습니다. 문제를 해결하려고 시도하면 해당 파일이 git rm --cached
이고 .gitignore
파일에 추가되었습니다.git checkout gitignore에서 파일 삭제
이제 저장소에서 지점을 체크 아웃 할 때마다 해당 저장소가 삭제됩니다. 이것을 피할 수있는 방법이 있습니까?
이 문제는 git rm
당신이 일에 여전히 파일이 포함 된 하나 개의 지점에서 전환 할 때 git rm
'에드 자식 제대로이 파일을 제거 할 경우 즉, 모든 일부 지점에 존재하는 커밋에 불과하다. 실제로 수행하고자하는 작업은 this question에 따라 git의 기록에서 파일을 제거한 것입니다. 그러나 이것은 저장소 히스토리를 다시 쓰는 것을 의미한다는 것을 알아야합니다. 따라서 한 가지 경우 나중에 git push --force
에해야하고 또 다른 경우에는이 저장소와 함께 작업하는 다른 사람들을 화나게 할 것입니다.
편집해야 재 작성 역사는, 실행 가능하면 모든 분기 기존 에 git rm --cached
조치를 커밋 확인하지. 그러나 삭제하기 전에 체크 아웃하면 불쾌한 재 삭제가 발생합니다.
요약 :
.gitignore
+ git rm --cached
를 저지하지만, (태그 등을 통해) 이전 버전을 체크 아웃하는 것은)에 대한 오류를 얻을 것이라는 점을 기억 기존의 untracked 파일을 체크 아웃하고 b) 이전 버전을 자주 체크 아웃 할 가능성이 있거나 (또는 실수로 커밋 된 파일 중 일부가 민감한 데이터를 포함 할 가능성이있는) HEAD는 세 번째 가능성이있다 : 각 지점의 경우, 원래 버전 동안하는 일이 (모든 파일을 제거 커밋 추가, 역사를 다시 작성하는 새로운 지점을 만들 무시하는 사람을 제외하고!)에 대해 설명하고, 사용자에게 재 작성된 브랜치로 전환하고 재 작성되지 않은 브랜치의 로컬 사본을 제거하도록 사용자에게 요청하는 매우 눈에 띄는 파일을 추가합니다.
1 그 이유는 하나 이후로 전환 할 것으로 예상되지 당신이 바로 그 시작에서 버전되지 말았어야 이러한 파일의 다른 사용자의 버전을 삭제하지 않으려하고, 이전 버전으로 돌아 가면 "파일이 이미 있습니다."오류가 발생하지 않습니다.
이것은 역사에서 파일을 삭제하는 것이 아니라 나뭇 가지 전체에서'.gitignore'를 일관되게 유지하는 것에 관한 것임을 분명히 밝혀주십시오. –
@YuvalAdam 그것은 히스토리에서 파일을 삭제하는 것에 관한 것입니다. 그들은 처음부터 시작해서'.gitignore'는 브랜치에서 삭제 기능을 수정하지 않을 것입니다 (그러나 각 브랜치에서'git rm' +'.gitignore' 커밋은 가능할 것입니다.), 많은 사용자가 많은 비용을 부담하더라도 선호합니다 더러운 역사의 ...) –
다른 가지에있는 다른 gitignore는 내가 수정 한 첫 번째 것이다. 그러나 그것은 문제를 해결하지 못했습니다. – aitkiar
파일을 삭제했습니다. 그리고 당신은 그들이 삭제 될 것이라고 불평하고 있습니까? 나는 –
을 따르지 않는다. 내가 자식을 변경하기를 원할 때마다 지우지 말고 지울 때마다 지우고 싶다. – aitkiar
은 모든 지점에서 커밋 된 .gitignore입니까? –