소개
리눅스 관리자는 종종 설정 파일을 수정해야 합니다. Git 은 무엇이, 언제, 왜 변경되었는지 기록해주기 때문에 매우 유용합니다. 전체 인프라 워크플로우가 필요하지 않은 상황이라도, 작은 Git 저장소를 활용하면 설정 파일을 수정하기 전후의 변경 사항을 효과적으로 추적할 수 있습니다.
이번 실습에서는 /home/labex/project 디렉토리에 있는 app.conf라는 작은 설정 파일을 추적해 봅니다. Git 저장소를 초기화하고, 로컬 작성자 정보를 설정하며, 초기 커밋을 생성한 뒤, 파일을 수정하고 변경 사항을 확인한 후 두 번째 커밋을 생성하는 과정을 진행합니다. 이 실습을 통해 Git 이력을 설정 변경의 영구적인 기록으로 활용하는 방법을 익히게 됩니다.
설정 파일 확인하기
이 단계에서는 Git 으로 추적할 파일을 확인합니다. 저장소를 만들기 전에 어떤 파일이 중요한지, 현재 내용이 무엇인지 파악하는 것이 중요합니다.
LabEx 프로젝트 디렉토리로 이동합니다.
cd /home/labex/project
설정 파일 목록을 확인합니다. -l 옵션을 사용하면 크기, 소유자, 권한과 같은 메타데이터를 볼 수 있습니다.
ls -l app.conf
파일 내용을 읽어봅니다. 이 설정 파일은 리눅스 애플리케이션 설정에서 흔히 볼 수 있는 간단한 key=value 형식을 사용합니다.
cat app.conf
log_level=info라는 내용을 확인할 수 있습니다. 나중에 이 설정값만 변경하여 Git diff 가 변경 사항에 집중할 수 있도록 할 것입니다.
로컬 Git 저장소 초기화하기
이 단계에서는 /home/labex/project를 Git 저장소로 변환합니다. Git 저장소는 숨겨진 .git 디렉토리에 이력을 저장합니다. 또한 커밋을 생성하려면 작성자 이름과 이메일 정보가 필요합니다. 실제 업무 환경에서는 전역 (global) 으로 설정할 수도 있지만, 실습 환경에서는 이 저장소에만 적용되도록 설정하는 것이 더 안전합니다.
저장소를 초기화합니다. -b main 옵션은 초기 브랜치 이름을 main으로 명시하여, 기본 브랜치 이름에 대한 Git 경고 메시지를 방지합니다.
git init -b main
로컬 작성자 정보를 설정합니다. --local 범위를 지정하면 이 설정값은 현재 저장소에만 저장됩니다. 마지막 명령어는 실습 저장소 내에서 Git 출력의 색상을 비활성화하여, 브라우저 터미널에서 status, diff, log 출력을 더 쉽게 읽을 수 있도록 합니다.
git config --local user.name "LabEx Learner"
git config --local user.email "learner@example.com"
git config --local color.ui false
git status --short를 실행합니다. Git 이 파일을 인식하고 있지만 아직 추적하고 있지 않기 때문에 파일이 추적되지 않음 (untracked) 상태로 나타납니다. 짧은 상태 출력에서 ??는 추적되지 않는 파일을 의미합니다.
git status --short
초기 설정 커밋하기
이 단계에서는 첫 번째 커밋을 생성합니다. 이 시점에서 이해해야 할 Git 의 두 가지 주요 영역은 작업 트리 (working tree) 와 스테이징 영역 (staging area) 입니다. 작업 트리는 사용자가 보고 수정하는 파일들이며, 스테이징 영역은 다음 커밋에 포함될 변경 사항들의 집합입니다.
설정 파일만 스테이징 영역에 추가합니다. 학습 중에는 git add . 사용을 피하는 것이 좋습니다. 실수로 관련 없는 파일까지 스테이징될 수 있기 때문입니다.
git add app.conf
짧은 상태를 다시 확인합니다. A는 파일이 새로운 파일로 스테이징되었음을 의미합니다.
git status --short
명확한 메시지와 함께 첫 번째 커밋을 생성합니다.
git commit -m "Track initial app configuration"
최근 이력을 확인합니다. --oneline 옵션은 출력을 간결하게 유지합니다. --no-pager 옵션은 대화형 뷰어를 여는 대신 터미널에 로그를 직접 출력합니다.
git --no-pager log --oneline
설정 변경 검토 및 커밋하기
이 단계에서는 설정을 수정하고 커밋하기 전에 변경 사항을 검토합니다. 이는 설정 추적을 위한 핵심적인 Git 습관입니다. 즉, 집중적인 변경을 수행하고, diff 를 검토한 뒤, 의도가 명확한 메시지와 함께 커밋하는 것입니다.
log_level을 info에서 debug로 변경합니다. sed -i 명령어는 파일을 직접 수정합니다. 패턴은 ^로 시작하고 $로 끝나므로 log_level=info라는 전체 라인만 정확히 변경합니다.
sed -i 's/^log_level=info$/log_level=debug/' app.conf
커밋된 버전과 현재 작업 트리 간의 차이점을 확인합니다. --no-pager를 사용하면 diff 결과가 터미널에 바로 출력됩니다.
git --no-pager diff -- app.conf
diff 결과에는 삭제된 라인 하나와 추가된 라인 하나가 표시되어야 합니다:
-log_level=info
+log_level=debug
수정 사항을 스테이징하고 커밋합니다.
git add app.conf
git commit -m "Enable debug logging"
간결한 이력을 다시 확인합니다. 이제 두 개의 커밋이 보일 것입니다.
git --no-pager log --oneline
마지막으로, app.conf에 대해 작업 트리가 깨끗한 상태인지 확인합니다.
git status --short app.conf
요약
리눅스 설정 추적을 위한 기본적인 Git 운영 방식을 실습했습니다. 설정 파일 확인, 저장소 초기화, 로컬 작성자 정보 설정, 상태 확인, 특정 파일 스테이징, 초기 커밋 생성, 변경 사항 검토 (diff), 그리고 설정 변경 커밋 과정을 수행했습니다. 이러한 습관은 관리자가 파일을 무작정 수정하는 대신, 설정 변경 사항을 이해하고 필요시 복구하는 데 큰 도움을 줍니다.



