GitNotes.10-1.md
본 문서는 Git Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

Section 10.1: 변경사항을 stage 하고 커밋하기

기본 사항

소스 코드를 변경한 이후에 커밋을 하기 위해서는, 해당 변경 사항들을 stage 하여야 한다.

예를 들어, README.md 파일과 program.py 파일을 수정하였다면:

git add README.md program.py

위와 같은 명령을 통해 해당 파일들을 다음에 수행할 커밋에 포함되도록 추가할 수 있다.

그런 다음, stage 된 변경사항을 아래와 같이 커밋한다.

git commit

위 명령 수행시 텍스트 편집기가 실행되는데, 많은 경우 vim 편집기가 뜨게 된다. 만약 vim 사용에 익숙치 않다면, i 키를 눌러 텍스트 삽입 모드로 변경할 수 있으며, 커밋 메시지를 작성한 다음에는 Esc 를 누르고 :wq 를 입력하여 저장 및 종료할 수 있다는 정도만 기억하도록 한다.

텍스트 편집기 실행을 피하고 싶다면, -m 옵션과 함께 커밋 메시지를 직접 입력할 수도 있다.

git commit -m "Commit message here"

커밋 메시지는 종종 특정한 서식을 따르는 경우가 많으므로, 더 자세한 설명을 위해서는 "커밋 메시지 잘 작성하기" 섹션을 참고하도록 한다.

단축 옵션

만약 상당히 많은 수의 파일들을 변경하였다면, 각 파일들을 일일이 나열하는 대신에, 아래와 같이 수행할 수 있다:

git add --all # "git add -a" 와 동일하다

혹은 최상위 디렉토리에서부터 하위 디렉토리까지의 모든 변경사항들을 삭제된 파일들을 제외하고 추가하기를 원한다면 아래와 같이 수행한다:

git add .

혹은 현재 Git 에 의해 추적 (tracked) 되고 있는 파일들만 추가하기를 원한다면 ("update"):

git add -u

이후 만약 필요하다면, stage 된 변경사항들을 아래와 같이 확인한다:

git status # 변경된 파일들의 목록을 출력한다 git diff --cached # stage 된 파일들 내의 stage 된 변경사항들을 보여준다

최종적으로, 변경 사항들을 아래와 같이 커밋한다:

git commit -m "Commit message here"

다른 방법으로, 새로운 파일 생성 없이 기존 파일들에 대해 수정 혹은 삭제만 수행하였다고 하면, git addgit commit 을 한 명령어로 합쳐서 수행할 수 있다:

git commit -am "Commit message here"

이 방법은 git add --all 와 동일한 방법으로 변경된 파일들을 stage 시킨다는 점을 유의하라.

민감 정보 관련

커밋에는 비밀번호나 private key 등 어떠한 형태의 민감한 정보도 포함하여서는 안된다. 만약 이러한 일이 발생하여 해당 변경사항이 중앙 서버로 push 되었다면, 해당 민감 정보는 이미 유출외었다고 생각해야 할 것이다.

다른 측면에서는, 이후에 이러한 정보를 제거하는 것이 가능하기도 하다. 쉽고 빠른 방법중의 하나는 "BFG Repo-Cleaner" 를 이용하는 것이다: https://rtyley.github.io/bfg-repo-cleaner/.

bfg --replace-text passwords.txt my-repo.git 명령어 수행 시, passwords.txt 파일에서 암호들을 읽어 해당 암호들을 ***REMOVED*** 문자열로 치환시킨다. 이 작업은 전체 저장소 내의 모든 커밋들을 대상으로 한다.

[출처] https://books.goalkicker.com/GitBook/ (CC BY-SA)

반응형

'번역 > Git Notes for Professionals' 카테고리의 다른 글

10.3: 커밋 수정(amend) 하기  (0) 2019.10.21
10.2: 커밋 메시지 잘 작성하기  (0) 2019.10.19
10: 커밋하기  (0) 2019.10.18
9.6: submodule 제거하기  (0) 2019.10.16
9.5: submodule 위치 변경하기  (0) 2019.10.16

+ Recent posts