3

내가 실수로 4 커밋 전에 파일 (저장소 루트 폴더에 상대적인 경로)을 밀어 넣은 Git 저장소가 있습니다. /Core/C:/testoutput/agwqe1s.xmlWindows에서 유효하지 않은 문자가있는 Git 커밋

내 Linux 컴퓨터에서이 작업을 수행 했으므로 실제 파일이 문제없이 생성되었습니다. 문제는 내가 Windows 컴퓨터로 돌아갈 때 Windows가 이러한 폴더를 만들지 않기 때문에이 파일이있는 분기로 전환 할 수 없다는 것입니다. Ok, 문제 없습니다. Linux에서 파일을 삭제하고 커밋하지만 힘들어도 작동하지 않습니다. 힘내는 여전히 내 Windows 컴퓨터에서이 불법 파일을 만들려고하는데, 어떻게해야할지 모르겠다.

처음부터 repo를 다시 만들 수 있다는 것을 알고 있지만 전체 커밋 로그 기록을 잃어 버렸습니다. 나는 그것을 피하고 싶었습니다. 내 옵션은 무엇입니까?

+0

자식에게는 익숙하지 않지만'C :'폴더와 그 모든 자식 (폴더 및 파일)을 삭제해야한다고 생각했습니다. 그러나 당신은 "파일을 삭제했습니다"라고 썼습니다. – Maximus

+0

파일과 폴더를 삭제했습니다. 힘내는 빈 폴더를 저장하지 않습니다. – SHiRKiT

답변

4

업데이트하려면 해당 분기를 체크 아웃 할 필요가 없습니다. 작동하는 지점에서 다음을 수행하십시오.

git fetch 
git push . origin/problembranch:problembranch 
git checkout problembranch 

트릭은 동일한 저장소로 푸시하는 것입니다. 그것이 .을위한 것입니다.

+0

브랜치가 업데이트됩니다. 문제는 브랜치에 체크 아웃 할 때 일어나는 일은 다음과 같습니다 : 잘못된 인수'/ Core/C : /'가 유효하지 않습니다. – SHiRKiT

+1

Linux의 지점을 업데이트하십시오. 그것을 밀어. 다른 지점에있는 동안 창에서 가져옵니다. 내가 게시 한 푸시 명령을 수행 한 후에 만 ​​지점을 체크 아웃하십시오. –

+0

작동하지 않았습니다. 나는이 'git filter-branch -index-filter'명령을 실행했다. -cached -ignore-unmatch FILENAME '\ --prun-empty - 태그 이름 필터 cat --allall이 해결책을 얻었다. http://stackoverflow.com/questions/2254601/bad-commit-to-git 시간 내 주셔서 감사합니다. @AdamDymitruk – SHiRKiT