file 추적 - .gitignore.gitignore 폴더의 모든 파일 / 폴더는 없지만 폴더 자체는 아닌 방법?




설정 이클립스 (3)

가능한 중복 :
어떻게하면 git 저장소에 빈 디렉토리를 추가 할 수 있습니까?

빈 폴더에 체크인하고 싶습니다. 어떻게해야합니까?


Answers

이 .gitignore를 폴더에 넣은 다음 git add .gitignore

*
*/
!.gitignore

* 줄은 git이 폴더 내의 모든 파일을 무시하도록하지만 !.gitignore 는 .gitignore 파일을 여전히 포함하도록합니다. 이렇게하면 로컬 저장소와 저장소의 다른 복제본 모두 빈 폴더와 .gitignore가 모두 필요합니다.

편집 : 명백 할 수도 있지만 하위 폴더를 무시하기 위해 * / git ignore를 추가하십시오.


git에서는 빈 폴더를 커밋 할 수 없습니다. 이 파일이 나타나기를 원하면 빈 파일이라도 무언가를 넣어야합니다.

예를 들어, .gitkeep이라는 빈 파일을 보관하려는 폴더에 추가 한 다음 .gitignore 파일에 다음을 작성하십시오.

# exclude everything
somefolder/*

# exception to the rule
!somefolder/.gitkeep 

.gitignore 및 .gitkeep 파일을 커밋하면 문제가 해결됩니다.


두 가지 주요 시나리오가 있습니다.

아직 커밋을 푸시하지 않았습니다.

문제가 커밋 된 추가 파일 (그리고 저장소에있는 파일을 원하지 않는 경우) 인 경우 git rm 사용하여 제거한 다음 --amend 를 사용하여 커밋 할 수 있습니다

git rm <pathToFile>

-r 하여 전체 디렉토리를 제거하거나 다른 Bash 명령과 결합 할 수도 있습니다

git rm -r <pathToDirectory>
git rm $(find -name '*.class')

파일을 제거한 후 --amend 옵션을 사용하여 커밋 할 수 있습니다.

git commit --amend -C HEAD # the -C option is to use the same commit message

이것은 최근의 로컬 커밋을 재 작성하여 여분의 파일을 제거하므로,이 파일은 푸시하지 않고 GC에 의해 로컬 .git 저장소에서 제거됩니다.

이미 커밋을 푸시했습니다.

다른 시나리오의 동일한 솔루션을 적용한 다음 -f 옵션을 사용하여 git push 를 수행 할 수 있지만 원격 기록을 다른 변경 사항으로 덮어 쓰므로 (저장소가 엉망이 될 수 있으므로) 권장되지 않습니다 .

대신에, --amend 없이 커밋을해야한다. (이것에 관해서는 -amend`를 기억하라 : 그 옵션은 마지막 커밋에서 히스토리를 재 작성한다).





git file folder gitignore