programing

Git으로 디렉토리를 추적하고 파일을 추적하는 방법은 무엇입니까?

nasanasas 2020. 11. 10. 08:16
반응형

Git으로 디렉토리를 추적하고 파일을 추적하는 방법은 무엇입니까?


최근에 Git을 사용하기 시작했는데 한 가지 문제가 있습니다. 콘텐츠를 추적하지 않고 디렉터리를 추적하려면 어떻게해야합니까?

예를 들어 내가 작업중인 사이트는 업로드를 허용합니다. 나는 분기 등을 할 때 생성되도록 업로드 디렉토리를 추적하고 싶지만 분명히 그 안의 파일은 아닙니다 (개발하는 동안 테스트 파일 또는 마스터의 실제 파일).

내 .gitignore에는 다음이 있습니다.

업로드 /*.*

또한 시도했습니다 (전체 디렉토리 무시).

업로드 /

이 디렉토리에는 하위 디렉토리 (uploads / thumbs / uploads / videos /)도 포함될 수 있습니다. 파일이 아닌 이들을 추적하고 싶습니다.

Git으로 가능합니까? 나는 답을 찾지 않고 모든 곳을 검색했습니다.


Git은 디렉토리를 추적하지 않고 파일을 추적하므로이를 달성하려면 적어도 하나의 파일을 추적해야합니다. 따라서 .gitignore파일이 다음과 같다고 가정합니다 .

upload/*

다음과 같이 할 수 있습니다.

$ touch upload/.placeholder
$ git add -f upload/.placeholder

잊어 버린 경우 -f다음이 표시됩니다.

$ git add upload / .placeholder
다음 경로는 .gitignore 파일 중 하나에서 무시됩니다.
업로드
정말로 추가하려면 -f를 사용하십시오.
치명적 : 추가 된 파일 없음

그러면 다음 git status이 표시됩니다.

# 브랜치 마스터에서
#
# 초기 커밋
#
# 커밋 할 변경 사항 :
# ( "git rm --cached ..."를 사용하여 언 스테이징)
#
# 새 파일 : upload / .placeholder
#

분명히 다음을 수행 할 수 있습니다.

$ touch upload/images/.placeholder
$ git add -f upload/images/.placeholder

여기 에 대해 썼습니다 .

디렉토리 내에 .gitignore를 추가하십시오.


내가 찾은 가장 좋은 대답은이 콘텐츠와 함께 업로드 폴더에 .gitignore 파일을 포함하는 것입니다.

# Ignore everything in this directory
*
# Except this file
!.gitignore

여기 에 Git 저장소에 빈 디렉토리를 어떻게 추가 할 수 있습니까?


지금까지 최고의 솔루션 :

1) .gitignore 파일 생성

2) 내부에 작성 :

*
*/
!.gitignore

3) 원하는 폴더에 .gitignore 파일을 추가하십시오.

출처 : https://stackoverflow.com/a/5581995/2958543


디렉토리 만 추적하고 파일은 추적하지 않기 위해 다음을 수행했습니다. git 추적 전용 파일에 대한 @PeterFarmer의 의견 덕분에 아래에 설명 된 파일을 제외한 모든 디렉토리를 유지할 수있었습니다.

# exclude everything in every folder
/data/**/*.*

# include only .gitkeep files
!/data/**/*.gitkeep

이것을 .gitignore 파일에 추가하면 작업이 수행됩니다. 다음은 내 폴더 구조입니다.

data/
├── processed
│   ├── dataset1.csv
│   └── dataset2.csv
├── raw
│   ├── raw_dataset1.json
└── test
    ├── subfolder
    │   └── dataset2.csv
    └── reviews.csv

내가 할 때 git add . && git statusgit은 파일이 아닌 폴더 만 인식합니다.

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   .gitignore
        new file:   data/processed/.gitkeep
        new file:   data/raw/.gitkeep
        new file:   data/test/.gitkeep
        new file:   data/test/subfolder/.gitkeep

.gitignore 파일에 대해 다음 사항에 유의하십시오.

앞에 슬래시는 루트 디렉토리 만 찾습니다.

/ dir

Double asterisk looks for zero or more directories.

/**/

참고URL : https://stackoverflow.com/questions/5091017/how-to-track-directories-but-not-their-files-with-git

반응형