새로운 질서 위키

글 한 편의 수정 이력을 깃으로 남기기

깃(Git)의 커밋은 파일의 한 상태를 기록한다. 글을 고칠 때마다 저장 버튼을 누르는 일과, 어떤 상태를 이력으로 남길지 고르는 일은 다르다. 아래 연습에서는 두 문장의 두 버전을 남긴다. 이제 ‘최종’이라는 파일 이름이 모든 책임을 혼자 질 필요는 없다.

준비와 실행

  1. Git이 설치된 컴퓨터에서 터미널을 연다. 아래는 macOS나 리눅스의 셸, 또는 Git Bash에서 실행하는 예다.
  2. 기존 작업 저장소 밖의 연습 공간으로 이동한다. poem-history라는 폴더가 이미 있다면 다른 새 이름을 정하고 아래 두 줄을 함께 바꾼다.
  3. 명령을 한 줄씩 실행하고 오류가 나면 그 자리에서 멈춘다. 특히 폴더 생성이나 이동이 실패했다면 다음 명령을 실행하지 않는다. 이름과 이메일은 이 저장소 안의 연습용 기록이며 전역 설정을 바꾸지 않는다.
  4. git diff에서 추가된 둘째 문장을 확인한다. 두 번째 커밋 뒤 git log에는 두 기록이 나타난다.
  5. 마지막 명령은 첫 버전의 내용을 출력한다. 현재 파일을 그 버전으로 덮어쓰지는 않는다.
mkdir poem-history
cd poem-history
git init
git config user.name "연습 기록자"
git config user.email "[email protected]"
printf '창문을 열었다.
' > poem.txt
git add poem.txt
git commit -m "첫 문장"
printf '창문을 열었다.
바람은 문장이 아니었다.
' > poem.txt
git diff -- poem.txt
git add poem.txt
git commit -m "둘째 문장 추가"
git log --oneline
git show HEAD~1:poem.txt

남긴 것과 남기지 않은 것

  • git add는 다음 커밋에 넣을 내용을 고른다. 여기서는 poem.txt만 지정해 주변 파일이 딸려가지 않게 한다.
  • git commit이 끝나기 전에 고친 모든 순간이 자동 보관되는 것은 아니다. 버전 관리는 기록 시점을 선택하는 일이기도 하다. 기록이 있다는 사실만으로 모든 수정 이유를 알 수 있는 것도 아니다.
  • 연습용 이름과 이메일도 커밋 정보의 일부로 남는다. 나중에 저장소를 공유한다면 수정 이력에 남는 이름도 공개 범위에 포함해서 살핀다.
  • 이 명령에는 원격 저장소로 보내는 단계가 없다. 컴퓨터 안의 이력과 다른 곳의 백업은 별도로 생각한다.

이력을 글의 재료로 삼고 싶다면 마지막 문장부터 지우는 시로 갈 수 있다. 파일 이름 끝에 붙이던 ‘진짜 최종’들의 행방은 최종본의 고고학에 남겨두자.

참고: Git 공식 입문 안내.

#깃 #글쓰기 #버전관리 #만들기