개발관련/Git

.gitignore 및 "The following untracked working tree files would be overwritten by checkout"

Rateye 2021. 12. 6. 09:50
728x90
반응형
질문 : .gitignore 및 "체크 아웃시 다음 추적되지 않는 작업 트리 파일을 덮어 씁니다."

그래서 .gitignore 파일에 폴더를 추가했습니다.

일단 내가 git status 하면 나에게 알려줍니다.

# On branch latest
nothing to commit (working directory clean)

그러나 분기를 변경하려고하면 다음과 같은 결과가 나타납니다.

My-MacBook-Pro:webapp marcamillion$ git checkout develop
error: The following untracked working tree files would be overwritten by checkout:
    public/system/images/9/thumb/red-stripe.jpg
    public/system/images/9/original/red-stripe.jpg
    public/system/images/8/thumb/red-stripe-red.jpg
    public/system/images/8/original/red-stripe-red.jpg
    public/system/images/8/original/00-louis_c.k.-chewed_up-cover-2008.jpg
    public/system/images/7/thumb/red-stripe-dark.jpg
    public/system/images/7/original/red-stripe-dark.jpg
    public/system/images/7/original/DSC07833.JPG
    public/system/images/6/thumb/red-stripe-bw.jpg
    public/system/images/6/original/website-logo.png
    public/system/images/6/original/red-stripe-bw.jpg
    public/system/images/5/thumb/Guy_Waving_Jamaican_Flag.jpg
    public/system/images/5/original/logocompv-colored-squares-100px.png
    public/system/images/5/original/Guy_Waving_Jamaican_Flag.jpg
    public/system/images/4/thumb/DSC_0001.JPG
    public/system/images/4/original/logo.png
    public/system/images/4/original/DSC_0001.JPG
    public/system/images/4/original/2-up.jpg
    public/system/images/3/thumb/logo2.gif
    public/system/images/3/original/logo2.gif
    public/system/images/3/original/Guy_Waving_Jamaican_Flag.jpg
    public/system/images/3/original/11002000962.jpg
    public/system/images/2/thumb/Profile Pic.jpg
    public/system/images/2/original/Profile Pic.jpg
    public/system/images/2/original/02 Login Screen.jpg
    public/system/images/1/original/Argentina-2010-World-Cup.jpg
Please move or remove them before you can switch branches.
Aborting

이것은 내 .gitignore 파일의 모습입니다.

.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/**/*
public/system/images/*
public/system/avatars/*

파일을 삭제하지 않고 분기를 전환 할 수 있도록 어떻게 작동합니까?

변경하면 해당 파일에 영향을 줍니까? 즉, 나중에이 브랜치로 돌아 오면 최근 커밋까지 모든 것이 완벽할까요?

파일을 잃어 버리고 싶지 않고 추적하는 것도 원하지 않습니다.

답변

파일을 무시하고 싶은 것 같지만 이미 커밋되었습니다. .gitignore는 이미 저장소에있는 파일에 영향을주지 않으므로 git rm --cached 를 사용하여 제거해야합니다. --cached 는 작업 복사본에 영향을주지 않으며 다음에 커밋 할 때 제거 된 것으로 표시합니다. 파일이 저장소에서 제거 된 후 .gitignore는 파일이 다시 추가되는 것을 방지합니다.

그러나 .gitignore에 또 다른 문제가 있습니다. 와일드 카드를 과도하게 사용하여 예상보다 적게 일치하게 만듭니다. 대신 .gitignore를 변경하고 이것을 시도하십시오.

.bundle
.DS_Store
db/*.sqlite3
log/*.log
tmp/
public/system/images/
public/system/avatars/
출처 : https://stackoverflow.com/questions/4858047/gitignore-and-the-following-untracked-working-tree-files-would-be-overwritten
728x90
반응형