KimMinJun
Coding Note
KimMinJun
전체 방문자
오늘
어제
  • 분류 전체보기 (486)
    • ALGORITHM (11)
      • 정렬 (6)
      • 최단경로 (1)
      • 자료구조 (1)
      • 슬라이딩 윈도우 (1)
      • etc (2)
    • Git (5)
    • Web (24)
      • Vanilla JS (13)
      • TS (2)
      • React (7)
      • ETC (1)
    • React 공식문서 (번역, 공부) (11)
      • Quick Start (2)
      • Installation (0)
      • Describing the UI (9)
      • Adding Interactivity (0)
      • Managing State (0)
      • Escape Hatches (0)
    • Next.js 공식문서 (번역, 공부) (3)
      • Getting Started (2)
      • Building Your Application (1)
    • PS (431)
      • 백준 (187)
      • Programmers (104)
      • CodeUp (21)
      • STL (3)
      • 제코베 JS 100제 (50)
      • SWEA (0)
      • LeetCode (65)
    • IT (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 관리

공지사항

인기 글

태그

  • 문자열
  • 다이나믹 프로그래밍
  • Level 0
  • Level 2
  • 수학
  • tree
  • 제코베 JS 100제
  • 그래프
  • 정렬
  • string
  • recursion
  • programmers
  • codeup
  • LeetCode
  • Level 1
  • C++
  • Level1
  • 백준
  • C
  • js

최근 댓글

최근 글

hELLO · Designed By 정상우.
KimMinJun
Git

Git CLI - 버전관리

Git CLI - 버전관리
Git

Git CLI - 버전관리

2022. 1. 21. 00:21

버전관리의 시작

현재 디렉토리에 버전관리를 시작하고 싶다면 "git init ." 을 입력하면 된다.

끝에 붙는 .은 현재 디렉토리를 나타낸다.

 

위를 수행하게 되면 .git 폴더가 생성되는데, 그 폴더로 버전을 관리하기 때문에 지우면 안된다.

 

버전의 생성

  • Repository : 버전이 저장되는 곳
  • Working Tree : 아직 버전이 만들어지기 전단계, 파일을 수정하는 곳
  • Staging Area : push 하기 전에 우리가 작업한 모든것을 push 하는것이 아니라, Staging Area에 버전으로 만들것을 올려놓고, 그것을 push하게 됨

 

  • git status : 현재 상태를 확인한다.
  • git add "파일명" : "파일명"을 스테이지에 올린다.
  • git commit -m "~" : 스테이지에 올라와 있는 파일들로 ~라는 이름의 버전을 만듦.
  • git log : 버전에 대한 히스토리와 그에 대한 정보를 볼 수 있음.

 

=> hello1.txt 파일에 1이라고 적은뒤 저장했다.

=> 깃은 명시적으로 어떤 파일을 버전관리 할것인지 알려주어야 한다.

 

=> hello1.txt라는 파일의 워킹트리의 수정사항을 버전으로 만들기 위해 스테이지에 올리기 위한 명령어이다.

 

 

=> 스테이지에 올라와있는 파일을 Repository로 commit함.

 

=> 버전의 히스토리와 그에 대한 정보를 볼 수 있다.

 

=> hello1.txt를 수정한 후 저장.

=> status를 보면, 스테이지 위에 올라와있지 않은 수정 사항이 워킹트리에 있음을 나타냄

 

=> 수정사항을 스테이지에 올리고 commit까지 완료.

=> "Message 2"라는 버전이 만들어졌으며 더이상 commit 할 것이없음.

 

 

버전간의 차이점 비교

  • git diff : 마지막 버전과 워킹트리 사이의 차이점을 알 수 있다.
  • git reset --hard : 작업한 내용을 없애고 저장되어 있는 버전으로 되돌린다.

=> 현재 저장되어 있는 버전에서 3이 지워지고 four가 생김.

 

만약 10줄 내외의 간단한 코드가 아니라 수백, 혹은 수천줄 짜리 코드가 있고, 그것이 한곳에 있는것이 아니라

전부 세밀하게 흩어져 있다면 마지막 버전 이후에 작업한 내용이 무엇인지 어려울것이다.

 

하지만 'git diff'를 통해 마지막 버전과 워킹트리 사이에 차이점을 파악하는것을 통해서 작업을 끝내기전,

즉 버전을 만들기전에 최종적으로 검토를 할 수 있다.

 

=> 작업 내용이 맘에 안들면 이전의 상태로 돌아갈 수 있다.

 

만약 버전관리를 하고 있지 않았다면, 우리가 작업한 것을 하나하나 지우며 이전 상태로 되돌려야 하는 어려움이 있다.

 

"버전과 버전 또는 어떤 파일과 파일간의 차이점을 통해서 비교할 수 있고, 그 비교를 통해서 의사결정을 할 수 있다"

라는 것이 버전관리의 정말 중요한 효용이다.

 

CRUD

  • Create : 버전을 만들고,
  • Read : 버전을 보고,(status와 log명령) - 현재 여기까지 완료
  • Update : 수정하고,
  • Delete : 삭제하는것.

 

 

checkout과 시간여행

  • git checkout '버전주소' : 해당 버전으로 돌아감
  • git checkout master : master로 돌아감

=> 현재 hello1.txt에는 1,2,3이 있었고, master 브랜치는 Message3이다.

=> Message2의 주소로 checkout 한뒤, Message2로 돌아갔다.

 

 

=> Message1으로 되돌아감

 

=> master를 가리키게 함으로써 가장 최신 버전이었던 Message3으로 되돌아감.

 

 

삭제

  • git reset --hard "버전주소" : 버전주소에 해당하는 버전으로 reset한다.

 

--hard를 붙이게되면 현재 수정하고 있는것과 버전을 모두 reset 시킨다.

하지만 --soft 를 붙이면 현재 수정하고 있는것은 살리고, 버전만 reset 시킨다.

 

 

되돌리기

  • git revert "커밋주소" : 커밋주소에 해당하는 버전을 revert 한다.

reset의 경우에 R3로 갈 경우에는 커밋한 버전의 주소를 적으면 그 버전으로 가지만,

revert의 경우엔 R4를 revert 해야지만 R3로 갈 수 있다.

 

<git revert "R4의 주소" 했을 시>

=> reset과 달리 되돌려도 되돌린 버전은 살아있다.

=> revert 커밋이 R4 커밋을 되돌린 것이다.

 

만약 Message1 으로 가고싶다면 Message2를 revert 하면 될 것 같지만 그러면 안된다.

버전 충돌이 일어나기 때문이다.

 

따라서 역순 즉, R3 -> Message2 를 revert 다 해주어야 한다.

 

Message2를 revert 하게 되면 Message2 이후의 모든 커밋을 되돌리는것이 아니라,

Message2를 할때의 변화만 revert 하는것이기 때문에 다 해주어야 한다.

저작자표시 (새창열림)

'Git' 카테고리의 다른 글

GIT CLI - 협업  (0) 2022.02.01
GIT CLI - Backup  (0) 2022.01.27
GIT CLI - Branch & Conflict  (0) 2022.01.23
GIT1  (0) 2022.01.20
  • 버전관리의 시작
  • 버전의 생성
  • 버전간의 차이점 비교
  • CRUD
  • checkout과 시간여행
  • 삭제
  • 되돌리기
'Git' 카테고리의 다른 글
  • GIT CLI - 협업
  • GIT CLI - Backup
  • GIT CLI - Branch & Conflict
  • GIT1
KimMinJun
KimMinJun

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.