문제

내 최초 커밋에는 일부 로그 파일이 포함되어 있습니다. 추가했습니다 *log 나에게 .gitignore, 그리고 이제 저장소에서 로그 파일을 제거하고 싶습니다.

git rm mylogfile.log

저장소에서 파일을 제거하지만 로컬 파일 시스템에서 파일을 제거합니다.

저장소 에서이 파일을 제거하려면 어떻게해야합니까? 없이 내 파일의 로컬 사본 삭제?

도움이 되었습니까?

해결책

로부터 남자 파일:

언제 --cached 주어진 단계적 컨텐츠는 분기 끝 또는 디스크의 파일과 일치하여 파일을 인덱스에서만 제거 할 수 있어야합니다.

따라서 단일 파일의 경우 :

git rm --cached mylogfile.log

그리고 단일 디렉토리의 경우 :

git rm --cached -r mydirectory

다른 팁

RESHARPER 파일과 같은 Repo에서 전체 폴더를 제거하려면 다음을 수행하십시오.

git rm -r --cached folderName

나는 일부 resharper 파일을 커밋했으며 다른 프로젝트 사용자를 위해 지속되는 파일을 원하지 않았습니다.

로컬 파일 시스템에서 삭제하지 않고 .gitignore를 기반으로 리포지토리에서 파일을 제거 할 수도 있습니다.

git rm --cached `git ls-files -i -X .gitignore`

또는 또는 Windows PowerShell에서 :

git rm --cached $(git ls-files -i -X .gitignore)

내 대답에 따라 여기 : https://stackoverflow.com/questions/6313126/how-to-remove-a-directory-in-my-github-repository

폴더/디렉토리 또는 파일을 git 저장소에서만 제거하려면 로컬로부터 3 가지 간단한 단계를 시도합니다.


디렉토리를 제거하는 단계

git rm -r --cached File-or-FolderName
git commit -m "Removed folder from repository"
git push origin master

다음에 해당 폴더를 무시하는 단계가 커밋됩니다

다음 커밋에서 해당 폴더를 무시하려면 루트 이름으로 하나의 파일을 만듭니다. .gitignore그 폴더 이름을 넣으십시오. 원하는만큼 넣을 수 있습니다

.gitignore 파일은 다음과 같습니다

/FolderName

remove directory

또한 민감한 데이터 (예 : 비밀번호가 포함 된 파일)를 획득 한 경우 저장소 이력에서 완전히 삭제해야합니다. 다음은 다음을 수행하는 방법을 설명하는 가이드입니다.http://help.github.com/remove-sensitive-data/

보다 일반적인 솔루션 :

  1. 편집하다 .gitignore 파일.

    ECHO mylogfile.log >> .gitignore

  2. 인덱스에서 모든 항목을 제거하십시오.

    git rm -r -f --cached .

  3. 인덱스 재 구축.

    git add .

  4. 새로운 커밋을 만드십시오

    git commit -m "Removed mylogfile.log"

Git을 사용하면 해당 파일이 변경되지 않았다고 가정하여 해당 파일을 무시할 수 있습니다. 이것은 실행하여 이루어집니다 git update-index --assume-unchanged path/to/file.txt 명령. 파일을 표시하면 Git은 해당 파일의 변경 사항을 완전히 무시합니다. 그들은 git 상태 나 git diff를 실행할 때 나타나지 않을 것이며, 절대로 헌신적이지 않을 것입니다.

(에서 https://help.github.com/articles/ignoring-files)

따라서 삭제하는 것이 아니라 영원히 변화를 무시합니다. 나는 이것이 로컬로만 작동한다고 생각하므로 동료들은 위와 동일한 명령을 실행하지 않는 한 여전히 변경 사항을 볼 수 있습니다. (그래도 이것을 확인해야합니다.)

참고 : 이것은 질문에 직접 응답하는 것이 아니라 다른 답변의 의견에 대한 후속 질문을 기반으로합니다.

파일을 추적하지 않고 로컬 및 원격 repo에서 삭제하지 않으려면 thhis 명령을 사용하십시오.

git update-index --assume-unchanged  file_name_with_path

위의 답변은 나에게 효과가 없었습니다. 나는 사용했다 filter-branch 커밋 된 모든 파일을 제거합니다.

git 저장소에서 파일을 제거하십시오.

git filter-branch --tree-filter 'rm  file'

git 저장소에서 폴더를 제거하십시오.

git filter-branch --tree-filter 'rm -rf directory'

이것은 모든 커밋에서 디렉토리 또는 파일을 제거합니다.

다음을 사용하여 커밋을 지정할 수 있습니다.

git filter-branch --tree-filter 'rm -rf directory' HEAD

또는 범위 :

git filter-branch --tree-filter 'rm -rf vendor/gems' t49dse..HEAD

모든 것을 리모컨으로 푸시하려면 다음을 수행 할 수 있습니다.

git push origin master --force
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top