Git 기본 명령어
git init | 새로운 Git 저장소를 초기화합니다. |
git clone <url> | 원격 저장소에서 새로운 로컬 저장소를 만듭니다. |
git add <파일명> | 변경된 파일을 스테이지 영역에 추가합니다. |
git add . | 변경된 모든 파일을 스테이지 영역에 추가합니다. |
git commit -m "커밋 메시지" | 스테이지 영역의 변경 내용을 커밋합니다. |
git push | 로컬 저장소의 변경 내용을 원격 저장소에 업로드합니다. |
git pull | 원격 저장소의 변경 내용을 로컬 저장소로 가져옵니다. |
git status | 현재 저장소의 상태를 확인합니다. |
git log | 커밋 로그를 확인합니다. |
git branch | 브랜치 목록을 확인합니다. |
git checkout <브랜치 이름> | 다른 브랜치로 이동합니다. |
git merge <브랜치 이름> | 다른 브랜치를 현재 브랜치로 병합합니다. |
git remote -v | 현재 로컬 저장소가 원격 저장소와 연결된 상태인지 확인합니다. |
디렉토리에서 git init으로 시작하면 git 의 버전관리가 시작된다.
Git에서의 버전이란
- 깃에서 버전이란 문서를 수정하고 저장할 때마다 생기는 것이라고 생각하면 쉽다.
- 깃에서는 버전을 관리하면 원래 파일 이름은 그대로 유지하면서 파일에서 무엇을 변경했는지를 변경 시점마다 저장할 수 있다. 또 각 버전마다 작업했던 내용을 확인할 수 있고, 그 버전으로 되돌아갈 수도 있다.
Stage 와 Commit 이해하기
작업 트리(작업 디렉토리)
앞에서 만들었던 디렉토리가 작업트리가 된다. 즉 우리눈에 보이는 디렉토리가 바로 작업트리이다.
스테이지(스테이징 영역)
스테이지는 버전으로 만들 파일이 대기하는 곳. 예를 들어 작업 트리에서 10개의 파일을 수정했는데 4개의 파일만 버전으로 만들려면 4개의 파일만 스테이지로 넘겨주면 된다.
저장소
저장소는 스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳.
스테이지와 저장소는 눈에 보이지 않는다. 깃을 초기화했을때 만들어지는 .git 디렉토리 안에 숨은 파일 형태로 존재한다.
순서 정리
1. 작업 트리에서 문서 수정
2. 수정한 파일 중 버전으로 만들고 싶은 것을 스테이지에 저장
3. 스테이지에 있던 파일을 저장소로 커밋하는 것이 깃이 버전을 만드는 순서이다.
untracked file
- 한번도 버전 관리 하지 않은 파일
git add hello.txt
위 명령어를 사용하면 스테이지에 파일이 올라간다.
git commit -m "message"
위 명령어를 사용하면 스테이지에 올라온 파일을 저장소로 올릴 수 있다.
git log
위 명령어를 사용하면 log 기록을 볼 수 있다.
- 커밋 내용 확인해보자
$ git log
commit c9895655e212f4311857e89ee960b7b775f86de1 (HEAD -> main) #commit hash, 최신버전
Author: LTSGOD <lts0424@naver.com> #작성자
Date: Sun Mar 12 14:54:33 2023 +0900 #버전을 만든 날짜
mesage2 #commit message
commit 92963092f82e9f4338ef4f1bb9d0c993d0b58383
Author: LTSGOD <lts0424@naver.com>
Date: Sun Mar 12 14:53:42 2023 +0900
message1
git diff
diff --git a/hello.txt b/hello.txt
index 1191247..0b66db0 100644
--- a/hello.txt
+++ b/hello.txt
@@ -1,2 +1,2 @@
1
-2
+two
수정한 파일이 최신파일과 어떤 점이 다른지 보여준다.
tracked file vs untracked file
$ git status
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: hello.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
hello2.txt
no changes added to commit (use "git add" and/or "git commit -a")
untracked file은 위에서 말했듯이 한번도 버전관리가 되어 있지 않았던 파일을 말한다.
tracked file
- git은 한번이라도 commit했던 파일은 수정 여부를 계속해서 추적합니다.
- git이 추적하고 있다는 뜻에서 tracked file 이라고 부릅니다.
git log --stat
commit 39dff9a09edbf8c6dd75597eb58a0aa600321ecc (HEAD -> main)
Author: LTSGOD <lts0424@naver.com>
Date: Sun Mar 12 15:02:45 2023 +0900
message3
hello.txt | 1 +
hello2.txt | 4 ++++
2 files changed, 5 insertions(+)
그냥 log 만 보면 어떤 파일들이 수정되었는지 알 수 없다. 위 명령어를 쓰면 관련파일들이 나열된다.
unmodified, modified, staged 상태
tracked 상태인 파일은 위 3가지 상태로 나뉜다.
unmodified
- 수정이 없는 파일을 말한다.
modified
- 수정한 파일을 말한다.
staged 상태
- stage에 올라와 있는 상태를 말한다.
방금 커밋한 메시지 수정하기
git commit --amend
방금 commit한 메세지를 수정할 수 있다.
작업 되돌리기
이제 스테이지에 올렸던 파일을 내리거나, 커밋을 취소하는 등 각 단계로 돌아가는 방법에 대해 알아보자.
작업 트리에서 수정한 파일 되돌리기
파일을 수정한 뒤 소스가 정상적으로 동작하지 않는 등의 이유로 수정한 내용을 취소하고 가장 최신 버전상태로 되돌려야 할 때가 있다.
이럴 때 check out 명령어를 통해 돌릴 수 있다.
git checkout -- 돌릴파일 이름
스테이징 되돌리기
앞에서는 파일의 수정을 취소하고 원래대로 돌렸다. 이번에는 수정된 파일을 스테이징했을 때 스테징을 취소하는 방법에 대해 알아보자.
git reset HEAD 파일이름
최신 커밋 되돌리기
이번에는 수정된 파일을 스테이징하고 커밋까지 했을 때, 가장 마지막에 한 commit을 취소하는 방법에 대해 알아보자.
git reset --soft HEAD~숫자 #숫자만큼 최신 commit 돌림
옵션동작 방식
--soft | 커밋을 되돌리고 해당 커밋 이후의 변경 사항들을 스테이지에 남깁니다. |
--mixed (기본 옵션) | 커밋을 되돌리고 해당 커밋 이후의 변경 사항들을 스테이지에 제거합니다. (작업 디렉토리에는 남아 있습니다.) |
--hard | 커밋을 되돌리고 해당 커밋 이후의 변경 사항들을 모두 제거합니다. (작업 디렉토리에 있는 파일도 해당 커밋 이후의 상태로 변경됩니다.) |
특정 커밋으로 되돌리기(돌릴 때 최신 커밋들은 삭제됨)
git reset 커밋해시
깃에서는 파일을 수정하고 커밋할 때마다 저장된 버전들이 쌓여있다. 앞에서 살펴본 git reset HEAD~ 명령으로 최신 커밋으로 돌릴 수도 있지만 특정 버전으로 되돌린 다음 그 이후 버전을 삭제할 수도 있다.
커밋 삭제하지 않고 되돌리기
커밋으로 되돌릴 때 수정했던 것을 삭제해도 되면 git reset을 사용해도 되지만 나중에 사용할 것을 대비해서 커밋을 되돌리더라도 취소한 커밋을 남겨두어야 할 때가 있다. 이 때는 git reset이아닌 git revert명령을 사용한다.
git revert (revert 명령 뒤에 취소하려고 하는 버전의 커밋해시)
reset의 경우에는 R2로 가려면 R2의 커밋해시를 지정해야 했다.
revert는 revert명령 뒤에 취소하려고 하는 버전, R5의 commit해시를 지정한다.
'Git' 카테고리의 다른 글
1장. Git의 좋은점, 리눅스 명령어, Vim 명령어 (0) | 2023.03.12 |
---|