Personal project/50Buttons

android .gitignore 파일을 수정해보자.

닉네임도항상고민 2023. 5. 23. 12:00

git을 사용 중에, 버전관리 되지 않을 파일을 .gitignore파일에 작성하여 버전관리 되지 않게 만들 수 있다.

 

안드로이드 스튜디오에서 새 프로젝트를 만들면,

.gitignore파일이 새로 하나 만들어지는 것 같던데, 그 파일은 내용이 부실한 거 같다.

(이게 내 프로그램에 설치된 git이 만들어내는 건지, 안스에서 만들어내는 건지도 궁금하다)

 

로컬에서 만들지 않고, 깃허브 remote저장소에서 새 저장소를 만들면서 바로 .gitignore파일을 추가하게 되면,

깃허브에서 제시하는 .gitignore파일이 들어오는 것 같은데 이 파일이 로컬에서 만들어지는 파일보다 더 쓸만한 거 같다.

 

// 깃허브의 .gitignore파일 샘플은 아래 링크에서 볼 수 있다.

https://github.com/github/gitignore/blob/main/Android.gitignore

 

깃허브의 샘플이 부족하다면,

저것 말고도, 구글 샘플앱 now in android (aka nia, 나우안)의 파일을 참고 삼을 수 있겠다.

https://github.com/android/nowinandroid/blob/main/.gitignore

 

이런 사이트에서도 gitignore파일의 샘플을 얻을 수 있다.

https://www.toptal.com/developers/gitignore

★ TIP. 저런 사이트에서 android, androidStudio, kotlin 태그 3가지를 넣어서 만들면 좋다는거 같다

 


 

 

//

.gitignore 파일 문법

 

git ignore파일에 대한 공식문서?인 거 같은데, 설명이 좀 어렵다.

https://git-scm.com/docs/gitignore

 

아무튼, 패턴? (문법?)이라는 게 있는데, 여기 문서가 예시를 잘 설명하고 있는 듯하다.

https://www.git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository

 

Git - Recording Changes to the Repository

In the simple case, a repository might have a single .gitignore file in its root directory, which applies recursively to the entire repository. However, it is also possible to have additional .gitignore files in subdirectories. The rules in these nested .g

www.git-scm.com

 

# ignore all .a files
*.a

# but do track lib.a, even though you're ignoring .a files above
!lib.a

# only ignore the TODO file in the current directory, not subdir/TODO
/TODO

# ignore all files in any directory named build
build/

# ignore doc/notes.txt, but not doc/server/arch.txt
doc/*.txt

# ignore all .pdf files in the doc/ directory and any of its subdirectories
doc/**/*.pdf

 

앞에 슬래시가 붙냐, 안 붙냐에 따라 의미가 다르고,

중간에 **를 넣냐 안 넣냐에 따라 미묘하게 의미가 달라지니 위의 주석을 잘 살펴보자.

 


 

//

.gitignore 파일 적용시키기

 

맨 처음에 커밋하기 전에는. gitignore 파일이 바로바로 적용되는 것 같았는데, (내 착각인가?)

(gitignore 파일이 제일 먼저 언제 반영되는지도 궁금한데, 이거도 나중에 새로 프로젝트 만들 때 알아봐야겠다.)

커밋을 한 번 하고 나서 .gitignore 파일을 수정하면 반영이 바로 안 되는 것 같다.

 

깃이 이미 인덱싱을 걸어놓고 추적하고 있어서 그런 듯하다.

 

 

1.

현재 수정사항이 있으면, 그 파일들을 먼저 커밋해 두고 (수정한. gitignore포함인 듯)

(다시 다른 프로젝트에서 해보니, 딱히 커밋해 둘 필요는 없는 것 같다. 하지만 혹시나 파일 날아갈까 쫄리니까 커밋을 해두는 게 나을 수도..)

 

2.

깃이 걸려있는 프로젝트의 루트 디렉터리로 가서 git bash를 열고 아래 명령어를 넣어주자.

git rm -r --cached .   (뒤에 '.' 현재 디렉터리라는 의미를 찍어줘야하는거를 잊지말자)

 

 

git bash를 열어서 git rm -h를 하면, rm에 대한 옵션을 볼 수 있다.

rm은 remove의 약자이고,

-r은 allow recursive removal (재귀적으로 하위 디렉터리까지 날린다는 의미 같다.)

--cached은  only remove from the index (깃이 인덱싱 하고 있는 것, 추적하는 것을 날린다는 의미 같다.)

'.'은 현재 디렉터리

 

rm cached를 하고 나면,

ignore에 작성된 거에 따라서 제거되는 파일이나, 새로 추적되는 파일이 생길 텐데,

그 파일들이 제대로 적용된 지 보고,

3. 다시 커밋을 해주면 되는 듯하다. (파일이 새로 추적되거나 삭제되었다는 커밋 남기기)

 

(아래에 써둔 ide에서 색깔 보는 방법으로 파악하면 편하다,

안스에서 황색으로 찍혀야 깃이 추적하고 있지 않은 파일이다.)


//

IDE에서 파일색으로 git이 파일을 어떻게 추적하고 있는지 파악할 수 있다.

 

안드로이드 스튜디오 ide에서 

파일 색깔로도 현재 ignore에 들어가 있는지 아닌지 파악할 수 있다.

 

(내가 잘못 알고 있을 수도 있다.)

- 흰색 : 이미 커밋된 파일

- 파란색 : 이미 커밋된 파일에서, 수정된 내용이 있는 파일

- 빨간색 : 새로 추가되었는데, 스테이지에 add 되지 않은 파일

- 초록색 : 새로 추가되었고, 스테이지에 add 된 파일

- 황색 : .gitignore에 의해서 추적되지 않는 파일

 

흰색, 파란색, 초록색, 빨간색 의미가 있는듯하다.
황색으로 표시되는게 .gitignore에 작성되어 추적되지 않는 파일이다.

 

 

 

다른 궁금한 점이나 오기는 댓글 달아주세요!~