기록방

GIT - 버전관리의 본질[생활코딩] 본문

CS/Git

GIT - 버전관리의 본질[생활코딩]

Soom_1n 2021. 5. 26. 21:17

설치 및 실습방법

[ windows에서 설치 ]

https://git-scm.com 에서 깃 다운로드.

기본값은 바꿀게 딱히 없음.

 

git bash실행.

(윈도우 운영체제에서 리눅스나 유닉스 처럼 명령어로 프로그램을 다룰 수 있게 됨)

"git" 명렁어 쳐서 잘 설치되었나 확인해보기.


● 저장소 만들기

[ 프로젝트 파일 만들기 ]

mkdir gitfth

[ 프로젝트 디렉토리 들어가기 ]

cd gitfth

[ 현재 디렉토리를 git의 (버전) 저장소로 만들기 ]

git init

git이 관리할 대상으로 파일 등록

[ 파일 생성 ]

vim f1.txt

'vim'이라는 에디터를 사용하여 파일을 생성

'vim'은 명령어 시스템에서 대부분 설치되어있기 때문에 어디서나 쓸 수 있다는 장점.

대신 사용이 어렵다는 단점.

 

파일안에 글을 적고싶으면 'i'를 눌러 INSERT모드.

그만 하고싶으면 'esc'.

저장하고 나가기 ':wq'

 

ls -al

현재 디렉토리의 전체 파일 보기.

 

cat f1.txt

파일의 내용 보기.

 

[ git이 파일을 추적하도록 명령 ]

git add f1.txt

깃에게 추적을 명령함.

자동으로 하지 않는 이유는 대규모 프로젝트 중에 임시로 필요한 파일들은 배제하기 위함.

 

[ 프로젝트 폴더의 상태를 확인 ]

git status

현재 git의 상태를 확인.

지금은 'f1.txt'파일이 untracked 라고 나옴.

(깃에 등록해주기 전까지 깃은 이 파일을 버전관리 하지 않고 무시함)

 

git add 이후에는 new file이라고 나옴.


버전 만들기 (commit)

이제 만든 파일의 버전을 만들어보자.

전 버전으로 돌아가거나 할 수 있음.

 

버전과 변화는 다름.

버전은 유의미한 변화.

 

[ 버전에 포함될 사람의 정보를 설정 ]

git config --global user.name "자신의 닉네임"
git config --global user.email "자신의 이메일"

버전에 닉네임과 이메일이 표시됨.

다른사람이 보았을때 누가 작업했는지 알 수 있음.

딱 1번만 실행하면 됨.

 

git commit

vim이 실행됨.

status의 정보가 보임.

여기에는 버전의 메세지(commit message)를 적음.

버전의 메세지는 이 변화가 어떤 변화인지, 왜 변경되었는지를 적는것.

 

vim이랑 똑같이 'i'를 눌러 INSERT, ':wq'로 저장종료.

최초의 버전생성.

 

git log

만들어진 버전에 대한 정보가 표시됨.

버전 메세지, 만든이 이름과 이메일, 언제 만들었는지 등.

 

 

다시 'f1.txt'파일의 버전을 만들어보자.

내용을 source : 2 로 바꾸고 status를 확인하면 'modified'라고 표시됨.

 

이 상태에서 git commit이 아니라.... git add f1.txt를 다시 해줘야함.

 

add는 최초 추적할때도 쓰지만, 파일이 수정되서 버전이 만들어지기 전에도 사용해야함.

 

이 다음 git commit.


Stage area

[ f1.txt로 f2.txt 만들기 ]

cp f1.txt f2.txt

f1.txt를 복사해서 f2.txt 생성.

git log에서 나가려면 'q'누르기

 

[ 두 파일 동시에 수정하기 ]

vim으로 두 파일 수정.

git status로 보면 두 파일 모두 modified라고 나옴.

여기서 commit전에 add를 넣는 이유가 나옴.

 

큰 프로젝트 진행중에 버전 commit시기를 놓쳤을 경우...

여러 파일의 버전이 한 번에 저장됨.

이럴때 원하는 파일만 add해서 commit하면 따로따로 버전 정리 가능.

 

f1.txt만 add해서 git status를 해보면 f1.txt는 초록색, f2.txt는 빨간색으로 표시됨.

이런식으로 선택적으로 파일을 commit할 수 있음.

 

commit이후에 git log를 보면 f2.txt는 그대로 빨간색 'modified'상태임.

 

다시 말해서 git add 명령어는 commit대기상태임.

이 대기장소를 stage area라고 부름.


변경사항 확인하기

[ 두 로그의 차이점 출력 ]

git log -p

최근 commit과 그 이전 commit이 표시되며 사이에 차이점이 출력됨.

+++이 최신 버전.

---이 그 이전 버전.

 

화살표 아래키로 내려갈 수 있음.

 

def/null은 파일이 생성되지 않았다는 것.

 

[ 버전 간의 차이점 비교 ]

git log '버전 id'

해당 버전을 포함한 이전 버전들의 log만 출력됨.

 

git diff '버전 id'..'버전 id2'

두 버전의 각 파일의 차이점들을 표시해줌.

 

git diff

최신 버전과 현재 작업의 차이점을 출력해줌.

add 전과 add 후의 파일을 비교하고 마지막으로 점검할 수 있게 함.


과거의 버전으로 돌아가기

버전관리의 또다른 쓰임새 : 과거로 돌아가기

commit을 취소하는 명령어라고 할 수 있는데 어렵고, 주의해서 사용해야함.

 

과거로 돌리는 방법에는 크게 reset과 revert가 있음.

이 두가지가 비슷한듯 다름.

 

[ reset ]

git reset --hard "버전 id"

해당 버전이 가장 최신 버전이 되고, 이후는 없어짐.

(삭제되는 것은 아니고 안보이게 된 것. 나중에 복구가능. 깃의 원리를 잘 이해해야 쉬움.)

 

나중에 원격저장소를 배우고 협업을 하는데, 인터넷에 버전을 공유할 수 있음.

공유 이후에는 절대로 reset하면 안됨.

즉 local 저장소에 있는 버전만 reset사용.

 

'--hard'는 쓰기 쉽지만 위험함.

나중에 soft, mashed 등등 배우지만 세세하게 리셋시키기엔 공부가 필요.

 

[ revert ]

git revert "버전 id"

버전 id의 커밋을 취소한 내용을 새로운 버전으로 만드는 명령.

아직 필요도없고 어려우니까 나중에 하기...

 

[ reset과 revert의 차이점을 재미있게 설명하는 카툰 ]

http://www.popit.kr/


명령의 빈도와 메뉴얼 보는 방법

어떤 것을 배울 때.

가장 많이쓰는 명렁어, 단어, 부품을 기본으로 갖고.

기존의 것을 배울 것으로 바꾸는 방법(국어->영어)을 알면 어느것이든 배우기 편하고 재밌음.

 

여기까지 git의 명령 빈도수를 보아, 중요도가 높은 것들의 40%를 배움.

이제 밑천이 있으니 이것을 활용해서

새로운 문제점들을 스스로 해결하는 방법을 알아보자.

메뉴얼을 보는 법..

 

[ add안하고 commit하기 ]

git commit --help

git commit에 대한 설명이 나옴.

명령어의 기본 구조와 자세한 설명, 옵션이 쓰여있음.

 

특히 옵션 부분이 우리가 주로 쓸 수 있는 추가기능.

여기에 git commit -a(--all)이 add안하고 commit을 사용할 수 있게하는 추가기능.

 

그런데 이런 에디터를 키기도 귀찮을 수 있음.

메뉴얼을 보면 추가기능중에 -m <msg>(--message=<msg>)가 있음.

<msg>를 커밋 메세지로 사용한다는 것.

 

따라서 이렇게 쓸 수 있음.

git commit -am "11"

vim창에 가지않고 commit가능.

 

메뉴얼을 보는게 좋긴하지만 쉽진 않음.

그래서 검색 또는 커뮤니티 등에 질문하는 방법도 사용하자.


수련해봅시다.

지금까지 아주 중요한 개념들에 대해 알아보았음.

버전을 생성, 생성된 버전을 이용해서 차이점을 보고 과거로 돌아가는 방법을 살펴봄.

어떠한 버전관리시스템을 보든간에 본질적으로 갖고있는 중요개념들임.

 

이후에는 "GIT"이라는 프로그램이 갖고온 혁신적인 면모들임.

 

여기가 학습을 멈추고 이후는 필요할때 배우기 딱 좋은 타이밍임.

backup기능이 중요한데 아직 못 배운게 아쉬우니 dropbox나 gogledrive를 활용하면 좋음.

 

협업이 필요하다면 이런것들론 택도없으니 계속 학습하자...

 

끝.

728x90