Automatic .gitignore generation

GitHub Docs: Ignoring files

  • .gitignore 파일은 git add 할때 이 파일들은 빼놓고 하라는 뜻입니다.
  • 보안상 민감한 파일일 수도 있고 github 용량제한을 넘어서는 대용량 파일일 수도 있습니다.
  • 한참 일을 하다보니 발생한 대용량 파일을 잊고 커밋했다가 문제가 되었습니다.
  • 이를 방지하고자 .gitignore 파일을 자동으로 생성하는 간단한 프로그램을 만들었습니다.

1. .gitignore 파일 구조

github/gitignore

  • .gitignore는 아주 간단한 구조를 가지고 있습니다.
  • add하지 않을 파일의 목록을 상대경로로 적어주기만 하면 됩니다.
  • 제 .gitignore 파일의 일부입니다.
1
2
3
4
data_ml/X_train_full.pkl
data_ml/X3_test_full.pkl
data_ml/X3_train_full.pkl
data_ml/X3_full_poolconv.pkl

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]
  • 코드는 이런 작업을 합니다.
    1. 50MB를 넘는 파일 명단 작성 (50m.txt)
    2. 파일을 열어서 한 줄 한 줄 보면서
      2-1. .git이 포함된 파일은 무시하고
      2-2. 상대경로 처음 부분 ./ 삭제
      2-3. 바뀐 내용을 .gitignore 파일에 저장
    3. 목록을 출력합니다.

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도 해봅니다.

  • 잘 됩니다.


도움이 되셨나요? 카페인을 투입하시면 다음 포스팅으로 변환됩니다

Share