본문 바로가기
개발(Develop)/깃(Git)_버전관리

깃(Git) - 깃허브(GitHub) 버전관리 기초부터 시작 / 깃에서 깃허브 업로드, 다운로드

by 왁왁s 2022. 4. 29.

우리는 게임이나 포토샵, 보고서를 작성하다가 ctrl+z를 사용해 

이전 단계로 돌아가거나 이전 데이터를 불러온다.

 

이렇게 원하는 시점인 '버전'으로 이동할 수 있게 하는 것이 버전 관리이며

소스코드를 변경하였는데, 이전의 원하는 시점으로 돌아가게 해 주는 소스코드 버전 관리 시스템이 'Git 깃'이다. 

 

Git은 데이터를 저장할 공간만 있다면 어디서나 사용할 수 있는데,

Git을 관리하는 프로젝트를 올려둘 수 있는 Git 호스팅 사이트 중에 하나가 우리가 흔히 아는 'GitHub 깃허브'이다.

 

 


Git 설치하기

 

그러면 바로 Git을 설치하고 로컬저장소에서 커밋 관리하는 것을 해보자.

 

Git을 설치하는 방법은 아래 링크된 글에 잘 설명이 되어 있으니 참고하도록 하자.

 

Git, Git Bash 쉬운 설치/ Git Bash 설치 쉽고 자세한 설명/ 윈도우 OS에서 리눅스 환경 구축하기/ Git Bash

Git Bash라는 것을 설치하기 전에 Git Bash가 무엇인지 부터 알아보고 가자. Git Bash란 무엇인가? 아래 사진을 보면 왼쪽은 우리가 Windows 운영체제에서 주로 쓰는 '명령 프롬프트, cmd'이고 오른쪽 사진

parkjh7764.tistory.com

 

위에 글에선 옵션 추가 사항을 설정하는 것까지 자세하게 나와있는데,

요새 Git을 설치하면 그런 선택사항 체크하는 것 없이 바로 설치가 되는 것 같다.

 

 


 

로컬저장소 만들기

로컬저장소는 내 컴퓨터에 폴더를 생성하여 Git과 연결을 해주어 Git을 통한 버전관리가 이루어지는 곳이다.

 

 

우선 바탕화면에 폴더를 생성하고 안에 메모장을 생성한다.

 

 

 

 

 

Git 연습하기 폴더를 마우스 우클릭을 하고 Git Bash Here 을 클릭한다.

                                         

 

 

 

Git Bash 창으로 열면 

해당 폴더가 있는 내 컴퓨터 경로를 보여준다.

 

소스코드를 Git으로 관리하기 전에

git init 명령어를 입력하여 저장소를 초기화해야 한다.

 

'Initialized empty Git repository'라는 텍스트가 나오면

초기화가 성공한 것이다.

 

이때 중요한 것은 저장소로 사용하고자 하는 폴더 경로로 이동한 다음에

git init 명령어로 초기화를 해줘야 한다.

 

 

'숨긴 항목'을 체크해주면

.git 폴더가 생긴 것을 볼 수 있다.

 

 


 

커밋 만들기

커밋(Commit) 이란?

:  의미 있는 변경 작업들을 저장소에 기록하는 것

 

 

 

(1) 버전 관리를 위해서 내 정보 등록하기

해당 버전을 누가 만들었는지 Email과 Name을 등록해주도록 한다.

 

이때 

$ git config --global user.email " "

$ git config --global user.name " "

 

명령어를 사용한다. 

 

 

(2) 커밋에 추가할 파일 선택하기

$ git add README.txt

 

아까 폴더 안에 생성 해준 파일을 추가해준다.

여기서 add 명령어란 git한테 해당 파일을 버전관리하게 추적을 시작해줘. 라는 뜻이다.

 

 

 

(3) 커밋에 상세 설명 추가하기

 

$ git commit -m "사이트 설명 추가할 내용 넣기"

 

큰 따옴표 안에 추가할 상세 설명을 넣어준다.

 

-m은 message의 약자이고 '1 file changed, 1 insertion(+)' 텍스트가 보이면 성공한 것이다.

이렇게 하면 첫 번째 버전을 만든 것이다.

 

 

텍스트 파일을 수정하고 두 번째 커밋을 해보자.

텍스트 파일 안에 아래와 같은 내용을 추가하고 다시 커밋을 해보겠다.

 

(4) 업로드된 파일 수정 후 커밋하기

 

$ git add README.txt

$ git commit -m "텍스트파일 내용 업데이트"

 

 

(5) 커밋한 내용 확인해보기

 

$ git log 

 

맨 아래부터 첫 번째 커밋, 두 번째 커밋이 나왔다. 

 

커밋 아이디와 설정한 이름과 이메일, 수정 시간이 나온다.

 

(6) 커밋했던 내용으로 되돌리기

 

우리는 커밋 아이디의 일부분을 사용해서 chekout 명령어로 이전 버전의 커밋으로 되돌릴 수가 있다.

 

$ git checkout cdaaa0298

 

커밋 아이디를 앞자리부터 7자리 이상 넣어주면  된다.

 

마지막 줄에 'Head is now at cdaaa02+ 아까 썼던 내용' 텍스트가 보이면 성공한 것이다.

이렇게 되면 첫 번째 커밋으로 되돌아가서 텍스트 파일을 열어보면, 처음 저장하고 커밋했던 내용으로 돌아온 것을 볼 수 있다.

 

 

다시 git log 명령어로 커밋한 내용을 확인해보면 입력한 이전 버전으로 돌아간 것을 확인할 수 있다.

 

 

그러나 이전 버전을 확인하고 최신 버전으로 다시 되돌아가고 싶다면

최신 버전의 아이디를 입력해도 되지만 git check out - 를 해도 된다.

 

 

git log 로 확인해보면 최신 버전으로 돌아간 것을 확인할 수 있다.

 

checkout 명령어를 통해서 원하는 버전의 시점으로 파일을 이동할 수 있다.

 

 


 

 

GitHub 원격 저장소에 커밋 올리기

 

지금까지의 커밋은 내 컴퓨터를 로컬저장소로 하여서 나 혼자만 볼 수 있는 버전 관리를 하는 것이다.

 

이번에는 우리가 자주 듣는 'GitHub 깃허브'라는 웹 사이트에 협업을 위한 원격저장소를 만들것이다.

원격저장소를 사용하게 되면 다른 개발자와 함게 버전 관리를 할 수 있기 때문이다.

 

GitHub에서는 원격저장소를 '레파지토리(Repository)'라고 부른다.

 

 

1. GitHub에 접속한다. => https://github.com/

 

2. GitHub 상단의 +를 클릭한 후 New repository를 클릭한다.

 

 

 

 

3. 레파지토리 생성 설정 값을 입력한다.

 

 Repository name : 원격저장소의 이름

 Description : 원격 저장소에 대한 간략한 설명

 Public : 저장소의 모든 내용을 다른 사용자들이 별도의 인증 절차 없이 확인

 Private : Owner 혹은 협업하는 사람만 볼 수 있음.

 

 Initialize this repository with : 저장소를 초기화할 때 함께 생성할 파일 지정

▶ Add a README file : README 파일 추가

=> README 파일은 저장소를 소개하는 파일로 해당 파일이 저장소 루트에 있다면 GitHub 저장소 페이지에 접속했을 때 큰 글씨로 README 파일에 작성된 내용을 보여준다.

=> 저장소를 소개하는 문서는 관습적으로 README 이름을 사용하며 포맷팅에 따라 확장자를 지정할 수 있다.

 

 Add .gitignore : .gitignore 파일 추가

=> .gitignore 파일은 Git 저장소에서 작업할 때 무시하고 싶은 특정 이름이나 패턴을 나열하는 특수 파일이다.

 

 Choose a license : license 파일 추가

=> license는 저장소에 라이센스 파일을 추가한다. 이를 통해 손쉽게 오픈소스 라이센스를 추가할 수 있다.

 

파란색 부분의 내용은 GitHub에서 Git 저장소를 처음 생성하는 경우에 해당 옵션을 사용한다.

우리는 이미 Git에서 초기화와 README 파일을 생성해주었기 때문에 해당 옵션을 체크하면

충돌이 발생할 수 있어, 옵션을 추가하지 않는다.

 


위에 있는 https://github.com/~/practice.git 이라는 주소를 통해서 원격저장소에 접속할 수 있다.

다른 개발자와 함께 작업을 하고 싶을 때 해당 주소를 공유하면 된다. 

또한 이 주소는 내 컴퓨터의 로컬저장소와 연결할 때도 사용이 된다. 


 

4. 로컬 저장소에서 생성한 커밋들 원격 저장소에 업로드 하기

git remote add origin https://github.com/~/practive.git

remote add origin 명령어는 로컬저장소에 원격저장소 주소를 알려준다. 

원격저장소는 GitHub에서 레파지토리를 생성하고 생성된 주소를 넣어준다.

 

깃(git)에 붙여넣기는 마우스 우클릭을 하고 Paste를 누르면 붙여넣기가 가능하다.

아니면 Shift+Ins 키를 눌러도 된다.

 

 

5. 로컬저장소에 있는 커밋들 push 명령어로 원격저장소에 업로드

 

git push origin master 

 

해당 명령어를 입력하면 GitHub 로그인 창이 뜨는데, 로그인 해주면 된다.

 

로그인을 해주면 해당 창이 뜬다. Authorize를 클릭해 접근 권한을 허용한다.

 

 

 


 

접근 권한을 허용해주면 이전에 입력했던 git push origin master 명령어가 실행이 되고, 100%가 나오면 성공적으로 push 한 것이다.

 

 

6. 원격저장소 GitHub에 가서 성공적으로 push 되었는지 확인하기 

 


GitHub 커밋을 로컬저장소로 클론(Clone)

원격저장소의 코드와 버전 전체를 내 컴퓨터에 있는 로컬 저장소로 내려받는 것'클론(Clone)'이라 한다. 

 

 혼자서 개발을 하는 경우에는 로컬에서 Git 저장소를 초기화해서 사용하면 되지만,

협업을 하거나 인터넷 소스 코드를 사용하는 경우에는 GiHub에 저장소를 만들고 이 저장소를 클론해서 작업하는 방식을 사용한다. git clone을 다시 말하면 저장소(repository)로부터 프로젝트를 복제하는 것을 의미한다. 

 

 

클론을 하면 최신 버전 뿐만 아니라 이전 버전들과 원격저장소 주소 등이 내 컴퓨터에 있는 로컬 저장소에 저장이 된다.

 

 

1. GitHub에 있는 프로젝트를 클론하기 위한 로컬 저장소 폴더를 만들어준 후에 Git Bash로 접속한다.

 

 

 

 

2. clone 명령어 뒤에 원격저장소 이름을 입력한다.

clone 명령어로 원격저장소 주소를 입력해주면 어느 원격저장소든 내 컴퓨터의 로컬저장소로 내려받을 수가 있다. 

그러나 입력해주는 원격저장소의 주소를 'Clone' 주소로 입력해줘야 한다.

 

GitHub로 돌아가, 상단에 초록색 버튼을 클릭한다. Clone에서 주소를 복사한다. 

 

이때 Git 저장소의 주소는 HTTPS와 SSH 방식으로 제공이 된다.

그리고 Download ZIP도 제공을 하는데, ZIP 형태로 다운로드 받게 되면 원격저장소와 버전 정보가 제외가 된다.

그렇기에 Clone을 사용한다.

clone 주소를 복사한 후에 git 창에 마우스 우클릭 -> Paste 를 클릭해 붙여넣기를 해준다.

한칸 띄고 마침표(.)을 찍는다. 안 찍어도 되지만, 점을 찍지 않으면 우리가 만들어준 GitHub 커밋 내려받기 폴더에 프로젝트 이름으로 지정해준 Practice 폴더가 생기게 된다. 생기지 않게 하려면 마침표를 찍어 생략해준다.  

 

다시 폴더로 돌아가보면 성공적으로 원격저장소에 있던 프로젝트가 잘 생성되었음을 확인할 수 있다.

 

 

 

3. 클론한 로컬저장소에서 파일을 수정하고 원격저장소에 올리기

원격저장소에서 내려받은 README.txt 파일을 수정한 후에 다시 원격저장소에 push를 해준다.

파일을 수정한 후 저장을 눌러준다.

 

 

 

 


 

git add README.txt

git commit -m "로컬저장소 수정한 부분 추가"

git push origin master

 

 

 

 

다시 GitHub로 돌아가면 이전 상태에서 오른쪽 사진과 같이 변경되었음을 확인할 수 있다.

 

 

 

 

★용어 정리★

Git : 깃, 버전 관리 시스템

GitHub : 깃허브, Git을 관리하는 프로젝트를 올려두는 사이트

GitBash : Git을 사용하는 환경, CLI 방식

GUI : 그래픽 유저 인터페이스:, 마우스 클릭을 사용

CLI : 커맨드 라인 인터페이스, 명령어를 하나씩 입력하는 방식 

 

커밋(commit) : 버전 관리를 통해 생성된 파일이나 그 행위를 말함

체크아웃(checkout) : 원하는 시점으로 파일을 되돌림

로컬저장소 : Git으로 버전 관리하는 내 컴퓨터 안의 폴더

원격저장소 : GitHub의 협업하기 위한 폴더

레포지토리 : 원격저장소를 의미

Push : 로컬 저장소의 커밋(버전관리한 파일)을 원격저장소에 올리는 것

Pull : 원격 저장소의 커밋(버전관리한 파일)을 로컬저장소에 내려받는 것

 

댓글