개발일지

TIL 1일차 깃과 깃허브 Git and GitHub

수수 아보카도 2022. 11. 15. 09:54

2022년 11월 14일 월요일.

오늘은 내일 배움 캠프 4기 Node.js 반 시작일이었다.

팀이 구성되고 팀원과 팀 정체성에 대해 페이지를 꾸미는 미니 프로젝트가 시작되었다.

 

오후에는 깃 허브 특강이 있었다.

 

1. 깃의 의미

깃Git 이란, 버전 관리 프로그램으로,

프로그램을 짤 때 변경 사항을 관리하는 툴이라 할 수 있다.

따라서 깃을 활용한 프로그래밍 개발이란,

유의미한 변화를 쌓아 프로그램을 만들어 나가는 것이다.

 

2. 깃의 필요성

깃의 필요성은 3가지이다.

1. 변경 내역을 확인할 수 있다.

2. 작업을 되돌릴 수 있다.

3. 협업할 수 있다.

 

3. 깃허브의 의미

깃허브GitHub는 원격 저장소로 호스팅 서비스이다.

말이 어려운데, 풀어서 말하자면

인터넷 상에서 깃으로 관리한 프로젝트를 관리해주는 서비스이다.

깃허브는 수많은 commits로 구성되는데,

이 커밋츠는 벽돌 하나하나라고 생각하면 된다.

또한 깃허브는 개발자의 소셜미디어라고 생각해도 좋을 정도로

개발자 사이에서 스스로의 역량을 쌓고 개발자끼리 소통하는 창구로도 쓰인다.

 

4. 깃이 관리하는 세 개의 공간

1. 작업 디렉토리 working directory : 버전 관리의 대상이 위치하는 공간. .git이 있는 디렉토리.

2. 스테이지 stage : 다음 버전이 될 후보가 올라가는 공간. stage에 add한다.

3. 저장소 repository : 버전이 만들어지고 관리되는 공간. repository에 commit한다.

 

작업 디렉토리는 우리가 눈으로 확인할 수 있지만,

스테이지와 저장소는 깃이 관리되는 가상의 공간으로 눈으로 확인할 수 없다.

개인적으로 git bash로 명령어 입력하는 것보다

깃허브에서 버튼들 요리조리 클릭하는 게 더 편했다.

 

5. Git Bash 실습

특강에서 실습은 git bash로 진행되었다. 실습 순서는 다음과 같다.

 

1. 빈폴더 만들기 > 폴더 안에서 마우스 오른쪽 > git bash here

 

2. 저장소 만들기: 컴퓨터 내에 존재하는 로컬 저장소 git init.

그럼 우리가 지정한 폴더 안에 .git이라는 폴더가 생성된다.

파일명 앞에 .이 붙어있으면 숨긴 폴더라는 뜻이다.

.git은 우리 작업 디렉토리이다.

 

3. 버전 관리의 대상 만들기. touch a.txt 비어있는 파일 만드는 방법이다.

 

4. 현재 작업 디렉토리 상태 보이기 git status

 

5. git add a.txt

 

6. git commit -m "설명" 커밋해주기. 설명 란에는 어떤 변경 사항이 있는지 적는다.

 

7. 모든 변경 사항들을 한꺼번에 stage에 add하기. git add .

.은 현재 파일이라는 뜻이다.

 

6. 브랜치 Branch

브랜치란, 버전을 여러 개의 흐름으로 관리하는 방법이다.

커밋들을 나누기. 버전의 분기.

 

브랜치가 없다면

각자 다르게 쌓아나간 commits들을 합치는 과정에서 문제가 생긴다.

일일이 수작업으로 고쳐야한다. 

 

브랜치로 버전의 분기를 관리하는 방법에는 3가지가 있다.

1. 브랜치를 나눈다.

2. 각자의 브랜치에서 작업한다.

3. (필요하다면) 나눈 브랜치를 합친다. (merge)

서로 다른 commit 중에서 같은 부분에서 다른 내용(충돌)을 제외하고서는 깃이 알아서 해준다.

 

Head란, 현재 작업 중인 브랜치의 최신 커밋을 말한다.

git branch 뒤에 뭔가가 붙으면 branch가 add된다. *master

 

Checkout이란, Head의 위치를 다른 브랜치의 최신 커밋으로 옮기는 것이다. ex. git checkout foo

 

충돌이란, 같은 부분을 다르게 수정했을 때 발생한다.

해결 방법은 직접 선별하거나 다시 커밋하는 방법이 있다.

 

7. 원격저장소 GitHub와의 4가지 상호작용

1. 클론 Clone : 복사해 오는 것. 깃허브에 있는 프로젝트를 내 컴퓨터로 가져오기.

2. 푸시 Push : 로컬 저장소의 변경 사항을 원격 저장소에 밀어push 넣어준다. 일종의 업로드.

  1) 원격 저장소를 로컬 저장소에 추가 (remote를 add)

  2) git push

3. 패치 Fetch

4. 풀 Pull : 원격 저장소의 변경 사항을 로컬 저장소로 땡겨오기. pull

 

작업 전후와 commit 전후로 수시로 pull과 push 해주는 것이 중요하다.

 

원격 저장소를 팀원들과 공유하는 방법까지 배웠다. 후후