코딩하는 문과생

[GIT] 생활코딩, GIT2 - 버전관리 본문

개발 관련 지식/GIT

[GIT] 생활코딩, GIT2 - 버전관리

코딩하는 문과생 2019. 12. 13. 16:30

명령어(CLI)를 이용해 버전을 관리하는 것을 소개한다.

 

 

[Git 설치]

 

Default값으로 설치

 

[시작]->[Git bash] 실행

우리는 깃배쉬를 콘솔이라 한다. 

$ git
# 잘 설치되었는 지 확인

 

 

[버전 관리의 시작]

깃에서 우리는 특정 디렉토리를 버전관리할 것이라고 알린다.

$ mkdir hello-git-cli
# 폴더를 하나 생성
$ cd hello-git-cli
$ pwd
$ ls -al
$ git init
# 깃으로 이제 관리할께

 

 

[버전 생성]

Repository: 버전이 저장되어 있는 곳

Staging Area: 파일 10개 중 2개만 콕 집어서 버전을 만들고 싶다. 2개만 Staging Area올리고 그 파일들만 Repository로 저장한다. 

Working tree: 버전으로 만들어지기 전 단계, 우리가 작업하는 공간

$ nano hello1.txt
# 1 입력 후 저장
$ ls al
$ cat hello1.txt
# 화면에 내용 출력

$ git status
# 상태 출력
# untracked files...

$ git add hello1.txt
# hello1.txt을 statging area로 올린다. 
# 버전이 될 파일들

$ git commit -m "Message 1"
# 버전을 제출하다.
# repository로 간다.

$ git status
# nothing to commit... 버전으로 만들 것이 없다.
$ git log
# Message 1의 설명
# 나갈 때는 q

$ nano hello1.txt
# 수정하자 +2

$ git status
$ git add hello1.txt
$ git commit -m "Message 2"
$ git log

 

 

[여러 개의 파일을 하나의 버전으로 만들기]

$ nano hello1.txt
# 3추가
$ nano hello2.txt
# 3추가
$ git status
# modified: hello1.txt
# untracked: hello2.txt
# git은 자동으로 관리하지 않는다.

$ git add hello1.txt
$ git add hello2.txt
# staging area로 올린다.
$ git status

$ git commit -m "Message 3"
$ git status
$ git log

$ git log --stat
# 어떤 파일이 연루되어있는지 확인 가능

 

 

[버전 간의 차이점 비교]

$ nano hello1.txt
# 3지우고 four 추가
$ git status
# staging 상태가 아니다.

$ git diff
# 차이점 확인
# 마지막 버전과 Working Tree를 비교

$ git reset --hard
# 우리가 작업한 내용이 리셋된다. 
# 최근 버전으로 돌아간다.

$ git log -p
# patch의 약자
# commit별로 뭐가 추가되고 수정되고 삭제되었는지 확인 가능

CRUD중 CR까지 했다. (버전을) 

이 후에서는 UD를 해보자.

 

 

[checkout과 시간여행]

$ git log
# master는 브랜치이다.
# (Head->master) 실제 마지막 버전을 가르키고 있다.

$ ls -al
$ cat hello1.txt
$ cat hello2.txt

$ git checkout e706e06.................................(Message 2 id)
# Message 2 버전으로 돌아 가고 싶다.
# Head가 Message 2 버전을 가리키도록 한다. 

$ ls -al
# hello1.txt 파일만 존재
$ cat hello1.txt

$ git log
# Head가 Message 2를 가리킨다.
# Message 3가 없어진게 아니다. 

$ git checkout master 
# 가장 최신이었던 부분으로 돌아간다. 

 

 

[삭제 - git reset]

버전을 지운다.

$ git status
# Message 2 버전으로 가고 싶다.
# Message 2 버전이 되겠다.
# --hard: 수정하고 있는 것과 이전 버전까지 다 삭제하겠다.
$ git reset --hard e706e06...(버전 id: Message 2 id)

 

 

[되돌리기 - git revert]

훨씬 더 세련된 방식으로 삭제와 보존을 가능케 한다.

$ git log
$ nano hello1.txt
# R3추가
$ git add hello1.txt
$ git commit -m "R3"

$ nano hello1.txt
# R4추가
$ git add hello1.txt
$ git commit -m "R4" 

$ git revert 28df...(R4의 주소)
# R3가 되고 싶으면 R4의 id가 필요
# 에디터가 뜬다.
# ctr+ x, y

$ git log
# R4를 취소하고 R3를 가지고 온다.
$ cat hello1.txt

$ git log -p

$ git revert (R4 id), (R3 id), (Message 2 id)
# Message 1으로 돌아가고 싶다.
# 해당 id로 변화하기 위해서는 처음부터 다 해줘야한다.
# 안 해주면 충돌이 난다. 

 

 

[보충]

$ nano hello1.txt
# 1
$ git add .
# 전체 파일을 Staging area로 보내버린다.
$ git commit -m "3"

$ git commit -am "4"
# add와 commit을 동시에

$ touch hello2.txt

$ git status
# untracked: hello2.txt
$ git commit -am "5"
# untracked: hello2.txt
# 즉 -am을 사용하기 위해서는 한번은 add를 해야한다.

$ git commit 
# 기본 에디터가 뜬다.
# Message 4 입력
# ctr + x, y

$ git config --global core.editor "nano"
# 깃 기본 에디터를 nano로 변경 

 

 

[추가적으로] 

  • diff tool
  • .gitignore - 버전관리 필요하지 않는 경우, 무시하고 싶은 파일 등록
  • branch - 우리의 저장소를 여러가지 상태로 존재할 수 있도록 지원 ex. 하나의 프로그램을 고객사에 따라 조금씩 수정할 필요가 있을 때
  • tag사용 - commit id -> 적당한 이름사용가능
  • backup, 협업

 

'개발 관련 지식 > GIT' 카테고리의 다른 글

[GIT] 생활코딩, GIT4 - 협업  (0) 2019.12.14
[GIT] 생활코딩, GIT3 - Branch & Conflict  (0) 2019.12.13
[GIT] 생활코딩, GIT3 - Backup  (0) 2019.12.13
[GIT] 생활코딩, GIT 1  (0) 2019.12.13