Mac OS 기준 homebrew에서 설치 가능, Windows는 git 사이트에서 .exe 파일 다운로드 후 설치
Homebrew
Install homebrew if you don't already have it, then:
$ brew install git
git 사이트: https://git-scm.com
잘 설치가 됐다면 터미널에서 git을 입력하면 git 명령에 대한 설명이 나타난다.
$ git
깃에 사용자 정보를 설정하려면 git config 명령과 --global 옵션으로 모든 저장소에서 같은 사용자 정보를 사용하도록 설정할 수 있다.
$ git config --global user.name "jongin"
$ git config --global user.email "ppj7515@gmail.com"
깃 초기화하기 - git init
$ git init
깃에서 버전을 만드는 단계?
작업 트리 → 스테이지 → 저장소
작업 트리(working tree): 작업 디렉터리(working directory)라고도 한다. 앞에서 만들었던 hello-git 디렉터리가 작업 트리가 된다. 즉, 우리 눈에 보이는 디렉터리가 바로 작업 트리.
스테이지(stage): 버전으로 만들 파일이 대기하는 곳, 스테이징 영역(staging area)이라고도 한다. 예를 들어, 10개의 파일을 수정했는데 4개의 파일만 버전으로 만들려면 4개의 파일만 스테이지로 넘기면 된다.
저장소(repository): 스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳이다.
스테이지 내용 파일 .git/index, 저장소 내용 파일 .git/HEAD
깃 상태 확인 - git status
$ git status
작업 트리에서 파일을 만들거나 수정했다면 스테이지에 수정한 파일을 추가한다.
수정한 파일을 스테이징 하기 - git add
cf) git add 명령 뒤에 파일 이름 대신 마침표(.)를 붙이면 작업 트리에서 수정한 파일들을 한꺼번에 스테이지에 올릴 수 있다.
$ git add hello.txt
파일이 스테이지에 있다면 이제 버전을 만들 수 있다. 깃에서는 버전을 만드는 것을 간단히 '커밋(commit)한다'고도 말한다.
스테이지에 올라온 파일 커밋하기 - git commit
$ git commit -m "message1"
-m 옵션을 붙여 커밋과 함께 저장할 메시지를 적을 수 있다.
저장소에 저장된 버전 확인 - git log
$ git log
스테이징과 커밋 한꺼번에 처리하기 - git commit -am
$ git commit -am "message2"
(단, 이 방법은 한 번이라도 커밋한 적이 있는 파일을 다시 커밋할 때만 사용 가능)
변경 사항 확인하기 - git diff
$ git diff
여기서 나타난 '-2'는 최신 버전과 비교할 때 hello.txt 파일에서 '2'가 삭제되었다는 뜻이다. 그다음에 나타난 '+two'는 hello.txt 파일에 'two'라는 내용이 추가되었다는 뜻이다.
tracked 파일, untracked 파일
한 번이라도 커밋을 한 파일 → tracked file
한 번도 커밋을 안 한 파일 → untracked file
git status로 보면 tracked file은 modified:로 untracked file은 new file:로 나눠지게 된다.
커밋에 관련된 파일까지 함께 살펴보려면 git log 명령에 --stat 옵션을 사용한다.
$ git log --stat
'Enter'를 누르면 다음 로그 화면을 볼 수 있고, 'Q'를 누르면 로그 화면을 빠져나와 깃 명령을 입력할 수 있다.
깃의 버전 관리에서 제외하고 싶다면 .gitignore 파일을 생성해 commit 하면 된다.
맥에서는 .DS_store 시스템 파일이 자동 생성되는데 .gitignore로 제외시키면 깔끔해진다.
unmodified, modified, staged 상태
unmodified: 작업 트리에 있는 모든 파일이 수정되지 않은 상태이다. (message: 'working tree clean')
modified: 파일이 수정만 된 상태이다. (message: 'Changes not stage for commit:')
staged: 커밋 직전 단계(커밋할 변경 사항이 있음) (message: 'Changes to be committed:')
커밋을 끝내고 난 후 hello2.txt 파일의 상태는 수정이 없던 unmodified로 돌아간 것을 볼 수 있다.
커밋 메시지를 잘못 입력했다면 커밋을 만든 즉시 커밋 메시지를 수정할 수도 있다. 가장 최근의 커밋 메시지를 수정하려면 git commit 명령에 --amend를 붙인다.
$ git commit --amend
작업 트리에서 수정한 파일 되돌리기 - git restore 파일이름 or git checkout -- 파일이름
cf) checkout으로 되돌린 내용은 다시 복구할 수 없다.
$ git restore hello.txt
스테이징 되돌리기 - git restore --staged 파일이름 or git reset HEAD 파일이름
cf) HEAD 다음에 파일 이름을 지정하지 않으면 스테이지에 있는 모든 파일을 되돌린다.
$ git restore --staged hello2.txt
최신 커밋 되돌리기 - git reset HEAD^
HEAD^는 현재 HEAD가 가리키는 브랜치의 최신 커밋을 가리킨다. 이렇게 되돌리면 커밋도 취소되고 스테이지에서도 내려진다. 취소한 파일이 작업 트리에만 남게 된다.
cf) 최근 3개의 커밋을 취소하려면 $ git reset HEAD~3
$ git reset HEAD^
참고) git reset 명령 옵션
명령 | 설명 |
--soft HEAD^ | 최근 커밋을 하기 전 상태로 작업 트리를 되돌린다. |
--mixed HEAD^ | 최근 커밋과 스테이징 하기 전 상태로 작업 트리를 되돌린다. 옵션 없이 git reset 명령을 사용할 경우 이 옵션을 기본으로 작동한다. |
--hard HEAD^ | 최근 커밋과 스테이징, 파일 수정 하기 전 상태로 작업 트리를 되돌린다. 이 옵션으로 되돌린 내용은 복구할 수 없다. |
특정 커밋으로 되돌리기 - git reset 커밋 해시
reset A를 할 경우 A 커밋 이후에 만들었던 커밋을 삭제하고, A 커밋으로 이동하겠다는 의미이다.
R2 메시지가 붙은 커밋으로 되돌려본다면 git log 명령의 결과 화면에서 R2 커밋의 커밋 해시를 복사한다.
git reset 명령 다음에 --hard 옵션까지 입력한 후 복사한 커밋 해시를 붙여 넣는다. 그리고 Enter를 누른다.
$ git reset --hard 복사한 커밋 해시
cat rev.txt로 파일을 확인해 보면 내용까지 바뀐 것을 확인할 수 있다.
커밋 삭제하지 않고 되돌리기 - git revert
가장 최근에 커밋한 R5 버전을 취소하고, R5 직전 커밋 R2로 되돌아가려고 할 때, revert 명령의 경우에는 revert 명령 뒤에 취소하려고 하는 버전, 즉, R5의 커밋 해시를 지정한다.
reset의 경우에는 취소할 커밋의 해시가 아니라 되돌아갈 커밋 해시를 지정, revert의 경우에는 취소할 커밋 해시를 지정
$ git revert 복사한 R5 커밋 해시
방금 취소한 R5 커밋은 rev.txt 문서에 영문자 'e'를 추가한 것이었다. cat rev.txt로 파일을 확인해 보면 추가했던 'e'가 없어진 것을 볼 수 있다.
출처: 고경희, 이고잉. 2019. Do it! 지옥에서 온 문서관리자 깃&깃허브 입문. 이지스퍼블리싱
'개발 > 기타' 카테고리의 다른 글
local repository를 github에 연동 (0) | 2022.11.11 |
---|---|
git 명령어 정리2 (0) | 2022.11.10 |