- .gitignore 파일은 git add 할때 이 파일들은 빼놓고 하라는 뜻입니다.
- 보안상 민감한 파일일 수도 있고 github 용량제한을 넘어서는 대용량 파일일 수도 있습니다.
- 한참 일을 하다보니 발생한 대용량 파일을 잊고 커밋했다가 문제가 되었습니다.
- 이를 방지하고자 .gitignore 파일을 자동으로 생성하는 간단한 프로그램을 만들었습니다.
1. .gitignore 파일 구조
.gitignore는 아주 간단한 구조를 가지고 있습니다.
add하지 않을 파일의 목록을 상대경로로 적어주기만 하면 됩니다.
제 .gitignore 파일의 일부입니다.
1
2
3
4data_ml/X_train_full.pkl
data_ml/X3_test_full.pkl
data_ml/X3_train_full.pkl
data_ml/X3_full_poolconv.pkl더 좋은 구조를 갖춘 .gitignore 파일의 예시를 모아둔 곳도 있습니다
vim 같은 텍스트 편집기로 열어서 항목을 추가하면 됩니다.
2. .gitignore 파일 자동 생성 프로그램 제작
- 용량이 50 MB를 넘어서는 파일을 자동으로 모아 자동으로 .gitignore를 만들어 봅시다.
- 파일 생성이 귀찮은게 저만은 아니었는지, 이런 일을 하는 프로그램이 종종 보입니다.
2-1. 파이썬 프로그램 제작
- 다음과 같이 짧은 프로그램을 만듭니다.
- make_gitignore.py라는 이름으로 저장했습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25#!/usr/bin/env python
# coding: utf-8
import os
files_50m = "50m.txt"
# 1. find files larger than 50M
cmd_50m = f"find -size +50000k > {files_50m}"
os.system(cmd_50m)
# 2. edit lines and save
items = []
line = " "
with open(files_50m, "r") as rf:
wf = open(".gitignore", "w")
while len(line):
line = rf.readline()
if ".git" not in line.split("/"):
add_item = line.lstrip("./")
items.append(add_item)
wf.write(add_item)
wf.close()
# 3. verification
[print(item.rstrip("\n")) for item in items]
- 코드는 이런 작업을 합니다.
- 50MB를 넘는 파일 명단 작성 (50m.txt)
- 파일을 열어서 한 줄 한 줄 보면서
2-1. .git이 포함된 파일은 무시하고
2-2. 상대경로 처음 부분 ./ 삭제
2-3. 바뀐 내용을 .gitignore 파일에 저장 - 목록을 출력합니다.
2-2. alias 설정
- 파이썬 프로그램을 만들었지만 이걸 실행하려고
python make_gitignore.py
를 입력하기 번거롭습니다. - 그냥
mg
만 입력하면 되게 하고 싶네요. - .bashrc 파일을 열고 한 줄 적어줍니다.
1
alias mg='python /workplace/utils/make_gitignore/make_gitignore.py'
- 위 줄에서
/workplace/utils/make_gitignore/
는 제가 파일을 저장한 경로입니다. - 각자 자기 설정에 맞게 변경하시면 됩니다.
2-3. 환경설정 적용
source ~/.bashrc
를 해서 바뀐 설정을 적용합니다.
3. 실행
- 이제 작업공간으로 가서 커밋하기 전에 명령어를 한 줄 실행합니다.
1
mg
- git add, commit에 이어 push도 해봅니다.
- 잘 됩니다.