코딩하는 문과생
[GIT] 생활코딩, GIT2 - 버전관리 본문
명령어(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 |