.gitignore에 추가 한 후 원격 저장소에서 디렉토리를 제거하십시오.
나는 일부 디렉토리를 커밋하고 github에 푸시했다. 그 후 .gitignore
무시해야 할 디렉토리를 추가 하여 파일을 변경했습니다 . 모든 것이 잘 작동하지만 (현재 무시 된) 디렉토리는 github에 있습니다.
github 및 저장소 기록에서 해당 디렉토리를 어떻게 삭제합니까?
.gitignore
파일 의 규칙은 추적되지 않은 파일에만 적용됩니다. 해당 디렉토리 아래의 파일은 이미 저장소에서 커밋되었으므로 파일을 스테이지 해제하고 커밋을 생성 한 다음 GitHub에 푸시해야합니다.
git rm -r --cached some-directory
git commit -m 'Remove the now ignored directory "some-directory"'
git push origin master
리포지토리 기록을 다시 쓰지 않고 기록에서 파일을 삭제할 수 없습니다. 다른 사람이 리포지토리를 사용하거나 여러 컴퓨터에서 파일을 사용하는 경우에는이 작업을 수행하지 않아야합니다. 여전히 그렇게 git filter-branch
하려면 역사를 다시 쓸 수 있습니다 . 여기에 유용한 안내서가 있습니다 .
또한 출력은 git rm -r --cached some-directory
다음과 같습니다.
rm 'some-directory/product/cache/1/small_image/130x130/small_image.jpg'
rm 'some-directory/product/cache/1/small_image/135x/small_image.jpg'
rm 'some-directory/.htaccess'
rm 'some-directory/logo.jpg'
는 rm
저장소에 대한 자식 피드백이고; 파일은 여전히 작업 디렉토리에 있습니다.
나는 이것을한다:
git rm --cached `git ls-files -i --exclude-from=.gitignore`
git commit -m 'Removed all files that are in the .gitignore'
git push origin master
git에있는 모든 파일 / 폴더를 무시하고 무시하고 수동으로 하나씩 선택해야합니다.
이것은 나를 위해 일을 중단 한 것으로 보입니다.
git rm -r --cached .
git add .
git commit -m 'Removed all files that are in the .gitignore'
git push origin master
내 대답에 따라 여기 : git 저장소에서 디렉토리를 제거하는 방법은 무엇입니까?
로컬에서가 아닌 git 저장소에서만 폴더 / 디렉토리를 제거하려면 간단한 3 단계를 시도하십시오.
디렉토리를 제거하는 단계
git rm -r --cached FolderName
git commit -m "Removed folder from repository"
git push origin master
다음 커밋에서 해당 폴더를 무시하는 단계
다음 커밋에서 해당 폴더를 무시하려면 .gitignore 라는 루트에 하나의 파일을 만들고 해당 폴더 이름을 폴더에 넣으십시오. 원하는만큼 넣을 수 있습니다
.gitignore 파일은 다음과 같습니다
/FolderName
Blundell의 첫 번째 대답은 저에게 효과적이지 않았습니다. 그러나 그것은 올바른 길을 보여주었습니다. 나는 이와 같은 일을했다 :
> for i in `git ls-files -i --exclude-from=.gitignore`; do git rm --cached $i; done
> git commit -m 'Removed all files that are in the .gitignore'
> git push origin master
아래 명령문을 실행하여 먼저 삭제할 파일을 확인하는 것이 좋습니다.
git ls-files -i --exclude-from=.gitignore
Visual Studio에 기본 .gitignore 파일을 사용하고 있었고 프로젝트에서 의도 한 작업이 아닌 모든 로그 및 bin 폴더를 제거하고 있음을 알았습니다.
Blundell의 대답은 효과가 있지만 기괴한 이유로 나와 관련이 없습니다. 첫 번째 명령으로 출력 된 파일 이름을 파일로 먼저 파이프 한 다음 해당 파일을 반복하고 해당 파일을 하나씩 삭제해야했습니다.
git ls-files -i --exclude-from=.gitignore > to_remove.txt
while read line; do `git rm -r --cached "$line"`; done < to_remove.txt
rm to_remove.txt
git commit -m 'Removed all files that are in the .gitignore'
git push origin master
참고 :이 솔루션은 Github Desktop GUI 에서만 작동합니다 .
Github Desktop GUI 를 사용 하면 매우 간단합니다.
폴더를 다른 위치 (프로젝트 폴더 외부로)로 임시 이동하십시오.
.gitignore
파일을 편집 하고 github 페이지에서 마스터 저장소를 제거 할 폴더 항목을 제거하십시오.프로젝트 폴더를 커밋하고 동기화하십시오.
폴더를 프로젝트 폴더로 이동하십시오.
.gitignore
파일을 다시 편집 하십시오.
그게 다야.
이 방법은 표준 .gitignore 동작을 적용 하며 무시해야 할 파일을 수동으로 지정할 필요가 없습니다 .
--exclude-from=.gitignore
더 이상 사용할 수 없습니다 : /-업데이트 된 방법은 다음과 같습니다.일반적인 조언 : 깨끗한 저장소로 시작 -커밋 된 모든 것, 작업 디렉토리 나 인덱스에 보류중인 것 없음, 백업을 만드십시오 !
#commit up-to-date .gitignore (if not already existing)
#this command must be run on each branch
git add .gitignore
git commit -m "Create .gitignore"
#apply standard git ignore behavior only to current index, not working directory (--cached)
#if this command returns nothing, ensure /.git/info/exclude AND/OR .gitignore exist
#this command must be run on each branch
git ls-files -z --ignored --exclude-standard | xargs -0 git rm --cached
#optionally add anything to the index that was previously ignored but now shouldn't be:
git add *
#commit again
#optionally use the --amend flag to merge this commit with the previous one instead of creating 2 commits.
git commit -m "re-applied modified .gitignore"
#other devs who pull after this commit is pushed will see the newly-.gitignored files DELETED
브랜치의 커밋 히스토리에서 새로 무시 된 파일을 제거해야 하거나 새로 무시한 파일을 향후 풀에서 삭제하지 않으려면 이 대답을 참조하십시오 .
PowerShell에서 작업하는 경우 단일 명령으로 다음을 시도하십시오.
PS MyRepo> git filter-branch --force --index-filter
>> "git rm --cached --ignore-unmatch -r .\\\path\\\to\\\directory"
>> --prune-empty --tag-name-filter cat -- --all
그런 다음, git push --force --all
.
설명서 : https://git-scm.com/docs/git-filter-branch
'development' 카테고리의 다른 글
Node.js (package.json) 용“devDependencies”NPM 모듈 설치를 어떻게 방지합니까? (0) | 2020.02.10 |
---|---|
wget을 사용하여 임의의 파일이있는 디렉토리를 재귀 적으로 가져 오기 (0) | 2020.02.10 |
브라우저가 CSS 선택기를 오른쪽에서 왼쪽으로 일치시키는 이유는 무엇입니까? (0) | 2020.02.10 |
파이썬에서 환경 변수를 설정하는 방법 (0) | 2020.02.10 |
"매개 변수"vs "인수" (0) | 2020.02.10 |