본문 바로가기
IT 지식/기타

Git과 Github

by 이민우 2021. 5. 9.
728x90
반응형

두 명 이상의 개발자가 하나의 프로그램을 개발한다고 생각해보자.

 

예를 들어 10개의 요구사항을 가진 프로그램을 만들기 위해 A 개발자는 1~5 기능을, B 개발자는 6~10 기능을 만든다. 그런데 이를 한 컴퓨터에서 진행할 수는 없다. 그러면 한 명이 컴퓨터를 이용할 때 다른 한 명은 강제로 휴식을 할 수 밖에 없고, 이러한 방법은 당연히 효율적이지 못하니까.

 

그렇다면 서로 다른 컴퓨터에서 작업을 해야할 것이다. 그런데 이렇게 만들어진 작업물은 결국에는 별도로 만들어진 것이라, 중간중간 테스트를 원한다면, 혹은 서로 연동되어야 하는 기능들이 존재하게 된다면 결국 두 개의 작업물들은 합쳐져야 한다. 그리고 이 과정을 프로그램 개발이 끝날 때까지 반복해야 한다.

 

이 과정은 너무 귀찮다. 또한 그렇게 합쳐졌을 때, 내가 담당한 파트를 수정하기 위해서는 합쳐진 프로그램도 수정해야만 한다. 이 과정 또한 너무 귀찮다.

 

이러한 귀찮음을 해결하기 위해 사용되는 것이 바로 Git이다.

 

 

 

Git

 

Git이란 소스코드를 효율적으로 관리하기 위해 개발된 '분산형 버전 관리 시스템'이다.

 

깃을 사용하면 소스코드가 변경된 이력을 쉽게 확인할 수 있고, 특정 시점에 저장된 버전과 비교하거나 특정 시점으로 되돌아갈 수도 있다.

위의 "9f0c14b" 같은 버튼을 클릭하면 수정 사항을,  <> 버튼을 클릭하면 이 때의 버전을 확인할 수 있다.

 

 

 

Git repository (저장소)

 

파일이나 폴더를 저장해두는 곳이다. 깃 저장소의 장점 중 하나는 파일이 변경 이력 별로 구분되어 저장된다는 점이다.

실제로 비슷한 파일이라도 내용 중 일부가 다르면 다른 파일로 인식하기 때문에 파일을 변경사항 별로 구분하여 저장할 수 있다.

 

저장소는 크게 윈격 저장소와 로컬 저장소로 나뉜다.

원격 저장소는 Github 같이 전용 서버에 저장하여 여러 사람이 함께 공유를 하기 위한 저장소이다.

로컬 저장소는 내 PC에 파일이 저장되는 개인 전용 저장소이다.

 

당연한 말이지만, 평소에는 로컬 저장소에서 작업을 하다 내용을 공유하고 싶으면 원격 저장소에 업로드를 하는 방식으로 작업이 이루어지게 된다.

 

 

 

Commit

 

파일이나 폴더의 추가 및 변경 사항을 저장소에 기록하는 기능이다.

 

커밋을 하게 되면 이전 커밋 상태에서 현재 상태까지의 변경 이력이 기록된 커밋이 만들어지게 되고, 이 덕분에 과거의 변경 이력과 내용을 알 수 있게 된다.

Commit 변경 내역

 

 

 


실습

 

일단 깃허브를 먼저 만들어보자.

위의 New 버튼을 눌러 repositry를 만든다.

 

만약 README.md 파일을 만드는 기능에 체크를 하지 않았으면 이렇게 만들어지게 되는데, 

저 빨간 박스의 URL을 복사해놓자. (옆의 복사키를 누르면 된다.)

 

 

그리고 로컬에서 git clone 명령어를 사용하면 폴더가 만들어지게 된다.

물론 이는 git을 다운받고 로그인까지 해놓은 상태여야 한다.

#원격 저장소의 파일 내려받기
git clone [URL]

 

 

그러면 이제 그 파일에서 간단한 파일을 만들자.

대충 이런 파일을 만든 후 저장.

 

그리고 명령어들을 사용하여 이를 깃허브에 올려보자.

명령어는 add => commit => push 순서이다.

# . 은 모든 파일을 의미. 특정 파일만 업로드 하고 싶으면 파일명 입력.
git add .
git commit -m [메세지 입력]
git push -u [원격 저장소] [브랜치]

그리고 아까 만든 Repo에 가보면 이렇게 변경이 되어있음을 확인할 수 있다.

 

 

 

 

Branch

 

프로그램의 개발 과정에서 개발자들은 동일한 소스코드를 함께 공유하고 다룬다.

그런데 이 과정에서, 나는 불필요하다 생각해서 삭제한 부분이 다른 팀원에게는 필요한 부분이었을 수 있고, 내가 필요해서 만든 기능이 다른 팀원의 에러 요인이 될 수 있다.

즉, 의도치않게 다른 팀원의 작업에 영향을 주게 될 수 있다.

 

이런 문제를 방지하며 여러 개발자들이 동시에 다양한 작업을 할 수 있게 만들어주는 기능이 바로 브랜치이다.

브랜치는 각자 독립적인 저장소를 구성하여 마음대로 소스코드를 변경하고, 이렇게 변경한 내역은 나중에 다른 브랜치와 병합을 함으로써 다시 하나로 모을 수 있게 된다.

 

저장소를 처음 만들었을 때 Git은 master라는 이름의 브랜치를 만들게 된다. 위에서 사용한 push 명령어의 마지막에 있는 "master" 단어가 바로 브랜치의 이름이다.

 

그러면 다른 브랜치를 만들어 보도록 하자. 다른 폴더에 git clone 명령어를 활용해 새로운 저장소를 만들고 이전의 버전을 불러와보자.

 

 

그리고 직전에 만든 파일을 수정해보자. 대중 한 문장을 추가하고,

 

다음으로는 새로운 브랜치를 만들고, 브랜치를 변경하자.

#브랜치 생성
git branch [브랜치명]

#연결된 브랜치 변경
git checkout [브랜치명]

 

마지막으로 다시 한 번 add => commit => push를 하자.

 

그러면 이렇게 두 개의 서로 다른 branch가 생성된 것을 확인할 수 있고,

서로 다른 내용을 가진 두 개의 동일한 파일이 서로 다른 브랜치에 존재함을 볼 수 있다.

 

 

그렇다면 이제 서로 다른 두 개의 파일들을 합쳐보자.

 

123okk2 브랜치를 master 브랜치에 합쳐보자.

#Branch 통합
git merge [현재 브랜치에 통합할 브랜치]

이렇게 하면 123okk2 브랜치에서 수정한 내역이 master 브랜치에 통합된다. 물론, 로컬 저장소에서만 변경이 된 사항이라 add => commit => push를 해줘야 이제 깃허브에도 적용이 된다.

 

 

그러면 이제 123okk2 브랜치가 필요가 없어졌으니 지워주자.

#브랜치 삭제
git branch -d [브랜치명]

 

 

 

보다 자세한 설명은 backlog.com/git-tutorial/kr/intro/intro1_1.html

 

728x90
반응형

'IT 지식 > 기타' 카테고리의 다른 글

Container & Docker  (0) 2021.05.17
Kafka  (0) 2021.05.17
Spring Framework  (0) 2021.05.08
[JAVA & JavaScript] 자바와 자바 스크립트  (0) 2021.03.30