[Git] 파일 추가하고 커밋하기

파일 추가하고 커밋하기

git 을 처음 배우면 아래 동작들을 공부하게 된다.

  • 파일 추가하기
  • 커밋하기
  • 변경점 확인
  • 파일 관리

인스타그램 광고에서도 소위 Git무새 라고 불리는 사람들을 두고 add - commit - push 만 하는 사람이라고 한다. 그 대표적인 동작 3가지 중 add 와 commit 에 대해 알아볼 예정이다.

파일 추가하기

새로운 파일을 추가하거나 저장소 내용을 변경하는 일은 굉장히 빈번한데, 이러한 변경 사항을 스테이징 영역에 저장하는 작업을 위해 git add 명령을 사용한다. 다양한 옵션을 사용 가능한데, git add -i 를 통해 대화형 셸을 사용할 수 있다. 이를 이용해 스테이징 한 내용을 취소하는 작업도 가능하다.

image

참고로, 앞에 붙은 알파벳을 옵션으로 넘겨주면 해당 기능을 사용할 수 있다. 예를 들어, git add -p 명령을 전달하면 패치 모드로 변경 사항을 스테이징 영역에 저장할 수 있다.

이 패치 모드는 추가하고자 하는 파일을 하나 이상 선택할 수 있다. 해당 모드에서 파일간의 차이를 표시하고 해당 변경 사항 추가 여부를 묻는 옵션을 보여준다.

image

이 때, 파일 안에서 차이가 있는 각 영역이 한 개의 헝크가 된다. 각 옵션에 대한 동작은 아래와 같다.

  • y: 변경 사항 스테이징
  • n: 건너뛰기
  • q: 종료
  • a: 파일에 있는 나머지 모든 변경사항 추가
  • d: 나머지 모든 변경사항 제외
  • e: 변경 사항 세분화

커밋하기

git commit 을 사용하면 다양한 방법으로 변경 사항을 로컬 저장소에 커밋할 수 있다. 이 때, 커밋 시에는 항상 로그 메시지를 작성해야 하는데 -m "message" 를 통해 작성하거나, 편집기를 사용할 정도로 복잡한 메시지라면 아무런 옵션 없이 git commit 을 실행한다.

또한 편집기를 사용해 커밋 메시지를 작성할 때, -v 옵션을 추가하면, Git 은 커밋하려는 변경 사항과 로컬 저장소의 차이점을 편집기에 표시해준다.

물론 커밋하기 전에 변경점 체크를 수행할 수 있다. 스테이징 영역에 추가된 파일을 커밋 후, 다른 내용으로 수정한 뒤 git status 명령을 보내면 아래와 같이 Changes not staged for commit 에 붉은 색으로 나타나는 것을 확인할 수 있다.

image

이 상태에서 git diff 명령어를 사용하면 차이점을 확인할 수 있다. 이 기능은 commit 전 후 뿐만 아니라 add 전 후 파일의 차이점을 확인할 수 있다.

image

git diff --cached 는 스테이징 영역과 저장소 차이를, git diff HEAD 는 작업 트리, 스테이징 변경 사항, 저장소 세 구간의 차이점을 모두 보여준다.

파일 관리하기

  1. 파일 이름 변경하고 이동하기

먼저 파일 이름을 변경하고, 이동하는 방법이다. Git 에서 git mv [원본 파일] [새로운 파일] 명령을 사용하면 같은 내용으로 파일을 이동시킬 수 있다. 이 명령어는 존재하는 파일 내용으로 새로운 파일을 생성 후 기존 파일의 이력을 유지한 상태로 원본 파일을 제거한다.

  1. 파일 복사하기

다음은 파일의 복사이다. 파일 복사는 터미널 명령어인 cp 명령어를 사용하면 된다. cp [대상 파일] [복사 위치] 와 같이 사용할 수 있다. 간단한 예시로 cp hello.html hello2.html 과 같이 명령하면 hello.html 파일을 복사한다.

  1. 파일 무시하기

.gitignore 파일에 특정 파일을 추가하면 저장소에서 사라진다. 와일드 카드를 사용하면 확장자 전체를 무시할 수 있다. 그 예시는 아래와 같다.

반면 .gitignore 에 어떤 파일들이 제외되는지를 공유하고 싶지 않다면, .git/info/exclude 파일을 수정하여 필요한 조건을 추가할 수 있다. 해당 파일에 추가해주면 로컬 저장소에서만 특정 파일이 무시되도록 할 수 있다.

Updated:

Leave a comment