...
Git 버젼 관리 시작
git init
- 깃 저장소를 초기화한다.
- 저장소나 디렉토리 안에서 이 명령을 실행하기 전까지는 그냥 일반 폴더이다.
- 이것을 입력한 후에야 추가적인 깃 명령어들을 줄 수 있다.
# 버전 관리를 하고자 하는 폴더 경로로 가서 .git 폴더 저장소를 추가하여, 버젼관리 시작
$ git init
# 초기 설정
$ git config --global user.name "본인의깃닉네임"
$ git config --global user.email "본인의깃이메일"
(master)라는 표시가 생기고, .git이란 폴더가 생성된다.
.git이란 폴더는, 파일의 history가 저장되는 폴더이므로 절대 절대 삭제하지 말 것‼‼
git 스테이징
git add
- 이 명령이 저장소에 새 파일들을 추가하진 않는다.
- 대신, 깃이 파일들을 지켜보게 한다.
- 파일을 추가하면, 깃의 저장소 스냅샷에 포함된다.
# git add명령어로 커밋할(깃에 반영할) 내용들을 추가할 수 있으며 이를 스테이징 이라고 한다
git add 파일명
# --all . * 옵션 모두 모든 변경사항을 반영한다는 의미
git add --all
git add .
git add *
git status
- git 워킹 트리의 상태를 보는 명령
- 워킹 트리가 아닌 폴더에서 실행하면 에러 발생
$ git status
# 저장소 상태를 체크한다.
# 어떤 파일이 저장소 안에 있는지, 커밋이 필요한 변경사항이 있는지, 현재 저장소의 어떤 브랜치에서 작업하고 있는지 등을 볼 수 있다.
$ git status -s
# git status와 유사하나 워킹 트리의 상태를 요약해서 보여주는 명령
# 변경된 파일이 많을 때 유용
아직 아무것도 하지 않은채 상태를 확인해보면,
Untrackted files라고 뜨는데, 아직 깃이 이 파일들을 관리하고 있지 않다는 의미가 된다.
즉, 깃 입장에선 빨강이 파일들이 북치든 장구치든 일절 상관 안한다는 것이다.
초록색 staged라는 말은 commit할수있는 상태 즉 스테이징 된 파일을 뜻한다.
git rm --cached
- git rm <fileName>을 이용하면 로컬, 원격저장소 모두 파일이 바로 삭제되고
- --cached 옵션을 사용하면 로컬에는 파일이 남아있지만 commit하면 원격저장소에서 해당 파일이 삭제가 된다.
만일 원격저장소에 없는 새로만든 파일이라면 단순히 untracked 처리가 된다.
$ git rm --cached <fileName>
.gitignore
- 하지만 일일히 제외하는 것보다, 아예 ignore되는 파일을 만들어서 모듈로 관리하는것이 효율 적이다.
.gitignore이라는 파일을 만들어주고, 안에다가 제외할 폴더를 적어준다.
.idea/security.json 같이 부분파일도 가능
다시 status를 보면 제외처리한 파일들이 modified상태인걸 알 수 있다.
git 커밋
git commit
- 깃의 의미있는 수정 작업이 끝났을 때 마침을 알리는 작업이다.
- 보통 “git commit -m “Message hear.” 형식으로 사용한다.
-m은 명령어의 다음 부분을 메세지로 남긴다는 뜻이다. - 커밋을 한 내용들은 이제 깃이 추적하며 버전관리를 할 수 있도록 도와준다.
깃은 반영된 소스코드, 리소스 등을 24시간 내내 추적해준다.
$ git commit
바로 commit하면 vim에디터가 뜨는데, 여기에 어떤 작업을 하고 커밋했는지 메모 같은걸 적어둔다.
vim에디터를 열지않고 바로 메모를 써서 커밋하는 방법도 존재한다.
개발자들은 자주 이 코드를 사용하는 편이다.
# Initial Commit 메모를 적고 커밋
$ git commit -m "Initial Commit"
한번 commit 된 순간 마음이 바뀌어서 .gitignore을 업데이트 해도 소용이 없다.
따라서 제외하고 싶은 파일을 제거한뒤, commit하고 ignore에 파일명을 추가하고 다시 commit해야 한다.
git add와 commit을 동시에
# -m : vi에서 별도의 메세지를 작성하지 않고 인라인 형식으로 바로 커밋 메세지를 작성하기 위한 옵션
# -a : 별도의 add 명령어를 사용하지 않고 수정된 파일에 대해 add를 수행하는 옵션
# -am : a 옵션과 m 옵션을 합쳐서 사용하는 방법
$ git commit -am "Initial Commit"
⚠️
단 -a 옵션은 새로생성된 파일은 안먹힌다.
따라서 새로만든 파일을 커밋할 경우 git add를 따로 해줘야 한다.
git 기록 보기
git log
- 커밋 내역을 확인해보고 싶을 때 사용하는 명령어이다.
- 이를 이용해서 이전 단계로 되돌리거나 버전관리를 할 수 있다.
# 로그가 길때는 vim 에디터로 열려서 여간 귀찮은게 아니다.
$ git log
# 따라서 요약된 로그를 보기도 한다.
$ git shortlog
방금 전에 커밋한 내용이 보이게 된다.
노란 줄의 commit 뒤에 나온 번호는 상태의 일련번호이고 이 번호를 통해 분기할 수 있게 된다.
# 커밋 로그를 보기 좋게 출력
$ git log --pretty=oneline
# git 커밋 그래프를 보여준다.
$ git log --graph
git log 명령어 예시 | 설명 |
git log | HEAD와 관련된 commit들이 자세하게 나옴 |
git log --oneline | 간단히 commit 해시와 제목만 보고 싶을 때 |
git log --oneline --graph --decorate | HEAD와 관련된 commit들을 조금 더 자세히 보고 싶을 때 |
git log --oneline --graph --all --decorate | 모든 branch들을 보고 싶을 때 사용하는 명령어 |
git log --oneline -n7 | 내 branch의 최신 commit을 7개만 보고 싶을 때 사용 |
git diff
- 커밋된 최근 버전과 작업 폴더의 수정 파일 사이의 차이를 출력
- 작업 트리에 있는 파일과 스테이지에 있는 파일을 비교하거나, 스테이지에 있는 파일과 저장소에 있는 최신 커밋을 비교해서 수정한 파일을 커밋하기 전에 최종적으로 검토할 수 있다.
# commit된 파일상태와 현재 수정중인 상태 비교
$ git diff
# commit된 파일상태와 add된 파일 상태 비교
$ git diff --staged
# commit간의 상태 비교하기 - commit hash 이용
$ git diff [비교할commit해쉬1] [비교할commit해쉬2]
$ git diff 048171 0c747d
# commit간의 상태 비교하기 - HEAD 이용
$ git diff HEAD HEAD^
# -- 가장 최근의 커밋과 그 전의 커밋을 비교한다
# branch간의 상태 비교하기 - HEAD 이용
$ git diff [비교할branch1] [비교할branch2]
$ git diff feature/test origin/master
# -- local의 feature/test브런치와 remote의 master branch 비교
인용한 부분에 있어 만일 누락된 출처가 있다면 반드시 알려주시면 감사하겠습니다
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.