카테고리 없음

GIT 기본 개념

25G 2021. 7. 2. 15:49

GIT은 버전 관리와 형상관리를 동시에 해주는 필수적인 프로그램이다.(리눅스 기반)

 

A라는 프로젝트를 GIT에 저장하면 다른 개발자가 A-1이라는 수정 파일을 올렸다 그럼 기존에 있던 A라는 파일을 커밋하고 A-1 파일이 업로드된다.

 

커밋: 영구히 보관할 때 사용

-- 는 풀내임을 적고

-는 약어로 들어온다.

GIT은 리눅스기반이기 때문에 대부분의 경우에 명령어를 입력했을 때 아무런 메시지가 안 뜨면 정상 실행된 것

get init

이라는 명령어를 쓰면 세 가지 영역이 생긴다

 

작업 영역 -> 인덱스 영역-> 해드 영역

 

작업 영역은 프로그래밍을 하고 있는 중이다. 그때 한파트를 완성한 후에 add를 명령하면 인덱스 영역에 트리로 저장된다. 그리고  그 완성된 파일을 영구히 저장하고 싶을 때 커밋을 하는 것이다 이대 해드 영역엔 저장된 여러 가지 버전들이 있을 때 전에 커밋했던 버전으로 돌아가고 싶을 땐 돌아가고 싶은 버전으로 Reset을 하면 된다.

 

병합 (merge)

커밋을 할 때 무조건 master에 저장하지 않고 사이드로 가지를 쳐서 분리시킨 다음 다른 공간에 개발을 한다.  그리고 그 분리된 공간에서 커밋을 하며 여러 가지 개발 버전이 생기면 그중에 가장 좋은 파일을 master에 병합을 시키는데 merge라고 한다.

 

 

GITHUB는 위 형상관리를 어느 컴퓨터에서나 할 수 있게 서버에서 기능을 제공해주는 사이트라고 생각하면 된다.

 

push: github에 파일을 올릴 때

pull: github에서 파일을 내려받을 때

push를 할 때 pull을 해줘서 형상(버전)을 똑같이 만들어서 push를 해 줘야 한다.  

 

 

 

git다운로드

https://git-scm.com/download

로가서 exe파일을 다운로드한 후에

 

 

Git - Downloading Package

Downloading Git Now What? Now that you have downloaded Git, it's time to start using it.

git-scm.com

 

그냥 계속 next만 누르면 된다. 따로 여기서 설정해줄 것은 없음

 

git 작업할 폴더를 꼭 만들어주고

비주얼 코드에서 폴더를 연다

git작업을 할 폴더에서 마우스 오른쪽 클릭을 하면 git bash here이라고 나오는데 이제 여기서 git 에관련된 모든 작업을 하면 된다.

git init명령어를 입력하면 해당 폴더에 위에서 말했던 세 가지 영역이 만들어진 것을 확인할 수 있다

git init 명령어로 만들어진 폴더
test

연습을 위해서 간단하게 작성한다 예를 들어 이제 작업이 끝나서 이제 파일을 업데이트를 하고 싶은 것이다. 그래서 add를 해준다

이제 업데이트한 파일을 영구히 저장하기 위해 커밋을 한다. -m은 메시지를 입력하는 것이다.

커밋이 완료됐다고 알려준다

이제 새로운 작업을 해보자. 기존 파일에 수정을 해서 저장을 하면 git이 자신이 관리하는 폴더에 아주 사소한 변화라도 생기면 감지해서 알려준다

 

수정을 하고 저장을 해서 git status라는 명령어를 치면 modified:라고 어떤 파일이 수정됐는지 친절히 알려준다.

그럼 이제 위에서 했던 것처럼 add후 commit을 하면 master에 점이 하나 더 생기면서 버전이 추가되는 것이다 

git log라는 명령어를 치면 지금까지의 저장된 버전들을 볼 수 있다. 현제 해더는 가장 최근에 커밋된 "2. 파일 수정 완료"버전이다. 만약에 "1. 파일 생성 완료"버전으로 돌아가고 싶으면 노란색으로 나와있는  commit에 있는 아이디로 버전을 reset 시킬 수 있다.

새로운 파일을 추가시켜보자

바로 git에서 감지를 해주는 것을 확인 할 수 있다. 빨간색(작업 영역) 이제 add . 를 해주면 아래와 같이 나온다

commit 되기 위해서 add에 들어가 있는 상태이다.(add영역)

commit을 한 후 상태를 확인해 보면 현제 상태는 동기화가 다 돼있는 상태라고 말해준다.

 

이제 전 버전으로 돌아가 보자

 

git log로 지금 까지 커밋된 파일들을 확인 후 

git reset --hard에 아이디를 앞자리 4자만 적어준다 다 적을 필요 없다 그리고 엔터를 치면 그 아이디의 커밋 지점으로 파일이 돌아간다.

돌아간 것을 git log로 확인해봤다

git reflog라는 명령어로 지금까지 커밋된 로그가 전부 다 남아있는 것을 확인할 수 있다.

노란색 글씨에 있는 커밋 아이디를 써서 다시 다른 버전으로 다시 돌아갈 수 있다.

 

분기(branch)

지금 현제 로그가 3개가 있는데 이제 이 로그를 분기를 시킬 것이다.

 

"git branch 새로운 브랜치 이름" apple이라는 새로운 브랜치를 만들었다

 

git branch명령어로 현제 어디에 가지를 치고 있는지 확인할 수 있다 지금은 master에 저장되고 있는 것

"git checkout 이동할 브랜치 이름"으로 브랜치를 이동시킨 것을 볼 수 있다

이제 이동된 새로운 apple브랜치에 파일을 하나 만들어보자

test 1.txt를 생성하고

데이터를 입력한 다음

add와 commit을 한다

git log로 현제 log상태를 보면 apple 브랜치에 지금까지 커밋된 파일들이 가지가 쳐져서 master 브랜치와 분리돼있는 것을 볼 수 있다

 

그럼 만약에 지금 상태에서 master로 브랜치를 이동하면 어떻게 될까?

apple브랜치에 있는 파일과 데이터가 deleted 됐다고 나온 것을 볼 수 있다

다시 apple로 브랜치를 이동시켜 준다

 

병합 merge

 

이제 다른 브랜치에서 수정된 사항을 master브랜치에 병합을 하는 것을 해보자

현제 apple브랜치에 위치돼있으니까 병합을 하는 쪽인 master브랜치로 이동시켜준다

master브랜치가 서비스를 할 뿌리 브랜치이기 때문 

"git merge 병합할 브랜치명"명령어를 작성해 주면 어떤 브랜치에서 어떤 파일이 추가됐는지 상세히 알려준다

이제 log로 확인해본다 

git log로 확인해 보면 apple브랜치에 있던 파일이 master에 추가된 것을 볼 수 있다.

 

 

팁 

clear를 치면 명령어 창이 깨끗해진다.

 

git reset --help라고 치면 사이트가 나오면서 어떤 명령어가 있고 어떻게 사용하는지 상세히 알려준다