Post

[TeamLog] Git/Github 수업

Git / Github class for TeamLog 12th


수업 목차

[!example] 목차

  1. Git, Github란 무엇인가?
  2. 용어 알아보기
  3. 명령어 알아보기
  4. 실습해보기
  5. 마무리

1. Git, Github란 무엇인가?

Git

Git이란 2005년 탄생한 버전 관리 시스템으로,
리눅스 커널을 최초로 개발한 리누스 토르발스가 만들었다.

참고자료 : 공식 문서에서 말한 Git의 탄생 비하인드

버전 관리란 무엇인가?

파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템이다.

버전 관리는 왜 필요한가?

Git, Github 수업 1
발표 준비를 하면서, PPT를 계속 수정하는 상황을 가정 해 보자.
다 알아볼 수 있다고 생각하며 파일명을 아무렇게나 정해 놨다.
하지만 이것 제출 마감일이 되어서야 발목을 잡는다. 뭘 제출해야 하는지 감이 잡히지 않는다.
‘대체 뭐지?’ 하고 결국 파일의 내용을 하나하나 확인해본다.

버전 관리 시스템을 사용하면 이런 불상사를 없앨 수 있다.
Git, Github 수업 2
한 눈에 무엇이 최종 제출본이고, 언제 어떤 버전으로 수정했는지를 볼 수 있다.
굳이 PPT 내용을 하나하나 다 확인하는 번거로움과 시간을 줄일 수 있는 것이다.

Github란?

Github는 로컬의 내용을 업로드하는 저장소라고 생각할 수 있다.
주로 협업과 오픈소스 프로젝트 기여, 코드 백업 등에 사용된다.
Git, Github 수업 3
이것은 앞서 로컬에서 작업한 것들을 Github에 업로드한 것이다.
모든 파일이 업로드되면서도, 변경 기록도 보여준다.
여기에 커밋 메세지, 즉 업로드 시에 설명 글도 ‘2차 수정’, ‘5차 수정’ 과 같이 적어주면 더 좋을 것이다.


2. 용어 알아보기

Git과 Github를 사용해서 협업할 때 주로 사용되는 말들.
무엇인지 모른다면 알아들을 수도 없고, 알아들을 수도 없다면 협업 자체가 매우 어려워지기에… 간단한 개념들은 알고 가자!

필수 용어들

  1. 로컬 저장소 (Local Repository) : 내 PC에서 관리하는 git 저장소
  2. 원격 저장소 (Remote Repository) : Github 등에서 관리하고, 로컬 저장소의 내용을 업로드
  3. 스테이징 (Staging) : 커밋 하기 전, 커밋하기 위한 파일들을 모으는 것
  4. 커밋 (Commit) : 스테이징 된 파일들을 커밋 히스토리에 기록하는 것
  5. 푸쉬 (Push) : 로컬 저장소의 커밋들을 원격 저장소에 업로드하는 것
  6. 풀 (Pull) : 원격 저장소의 변경 사항들을 로컬 저장소에 가져오는 것
  7. 브랜치 (Branch) : 독립적으로 어떤 작업을 진행하기 위한 분기
  8. 클론 (Clone) : 다른 저장소로부터 프로젝트를 복제하는 것
  9. 병합 (Merge) : 두 브랜치의 변경 사항은 하나로 합치는 것
  10. 풀 리퀘스트 (Pull Request) : 커밋을 병합하는 것을 허락해달라고 요청하는 것

3. 명령어 알아보기

기본 설정 및 초기화

1
2
3
4
5
6
7
8
git config

git config --global user.name "your_name"
git config --global user.email "your_email@example.com"
git config --global user.password "your_token"
git config --global init.defaultBranch main
git config --global core.autocrlf true
git config --global credential.helper store

git config 명령어는 Git의 설정 값을 조회하거나 설정할 때 사용한다.

1
git init

현재 디렉토리를 Git 저장소로 만들어 준다.

로컬 저장소 작업

1
2
3
4
git add

git add testfile
git add .

변경된 파일을 스테이징 영역에 추가하는데 사용한다.
이 명령어를 통해 선택된 파일들이 커밋된다.

1
2
3
git commit

git commit -m "testmessage"

스테이징 영역에 추가된 변경사항들을 로컬 저장소의 히스토리에 기록한다.

1
git status

현재 작업 디렉토리와 스테이징 영역의 상태를 확인할 때 사용한다.
어떤 파일이 변경되었는지, 스테이징 되었는지 등을 보여준다.

1
git log

커밋 히스토리를 조회할 때 사용한다. 커밋 이력들을 확인할 수 있다.

원격 저장소 작업

1
2
3
git clone

git clone <원격 레포지토리 주소>

원격 저장소의 내용을 로컬에 복제할 때 사용한다.

1
2
3
4
git push 

git push origin main
git push -f origin main

로컬 저장소의 커밋들을 원격 저장소에 업로드할 때 사용한다.

1
2
3
git pull

git pull origin main

원격 저장소의 최신 변경사항을 로컬 저장소에 반영할 때 사용한다.
git fetchgit merge의 기능을 합친 명령어이다.

브랜치 및 병합 작업

1
2
3
4
git branch

git branch testbranch
git branch -d testbranch

브랜치를 생성, 삭제 또는 리스트업할 때 사용한다.

1
2
3
git checkout

git checkout testbranch

다른 브랜치로 전환할 때 사용한다.

1
2
3
git merge

git merge testbranch

두 브랜치의 변경사항을 하나로 합칠 때 사용한다. 현재 브랜치에 다른 브랜치의 변경사항을 병합하는 명령어이다.

4. 실습

위에서 읽어 본 기본 명령어들 중 일부를 사용해서, 로컬 깃 레포지토리에서 커밋하고 원격 레포지토리에 업로드 해 볼 것이다.

깃허브에서 레포지토리 생성하기

Git, Github 수업 4
Github 메인에서 우측 상단 + 버튼을 누르고 New Repository를 선택한다.
Git, Github 수업 5
레포지토리 이름, 설명, 공개 여부를 설정한 후 우측 하단 ‘Create Repository’로 레포지토리를 생성한다.

깃 로컬 레포지토리 만들기

이제 로컬 Git으로 파일을 생성하고 커밋한 이후 원격 레포지토리에 푸쉬하기까지의 과정이다. (윈도우 기준으로 설명할 예정인데, 명령어는 다 똑같다!)
작업 폴더로 사용할 폴더를 아무 경로에 만들고, 터미널에서 해당 폴더를 연다.
나의 경우에는 C:\Users\KWJ\Desktop\ugly-woojin에 만들었다.

1
git init

위 명령어로 일반 폴더를 깃이 관리하게끔 할 수 있다.
이제 해당 폴더는 로컬 레포지토리로써 사용하는 것이다.

파일 추가하고 커밋하기

이제 깃으로 초기화 된 폴더에 파일을 만들어 준다. Git, Github 수업 6 나는 이렇게 파일을 만들었다.

이제 이 파일을 추가하고, 커밋해야 하는데 명령어는 다음과 같다.

1
2
3
git add .        #현재 폴더의 모든 파일들의 변경 사항을 add

git commit -m "TeamLog 2024"        #코멘트를 달아서 변경사항들을 커밋

원격 저장소 추가하기

지금 로컬 레포지토리는 아까 만든 Github 레포지토리와 연동되어 있지 않다. 커밋들을 Github에 업로드하기 위해서는 원격 레포지토리와의 연결이 필요하다.

1
git remote add origin https://github.com/h0pler/ugly-woojin.git

위 명령어로 원격 레포지토리와 연결해줄 수 있다.

브랜치 이름 바꾸기

일반적으로 Git 시스템은 기본 브랜치로 master를 사용하지만, Github에서는 기본 브랜치로 main 브랜치를 사용한다. 그래서 로컬 저장소의 브랜치 이름과 원격 저장소의 브랜치 이름이 다를 경우 업로드가 제대로 될 수 없다.

1
git branch -M main

위 명령어를 통해서 브랜치의 이름을 main으로 변경 해 줄 수 있다.

Github에 업로드하기

이제 마지막으로 변경 사항을 Github에 업로드하면 된다.

1
git push origin main

위는 origin 즉 원격 저장소의 main 브랜치에 업로드하라는 명령어이다. 위 명령어가 오류 없이 제대로 실행된다면 Git, Github 수업 7 이러한 메시지가 출력된다.

이제 Github에 다시 접속해서 아까 만들어 두었던 레포지토리를 들어가 보면 Git, Github 수업 8 내가 만든 파일이 정상적으로 업로드된 것을 볼 수 있다.

5. 마무리

김우진의 한마디..ㅜ

수업시간에 그렇게까지 많은 변수에 대비를 하지 못했어서 실습이 원활하게 이루어지지 않았던거같아요..ㅜㅜ 심심한 사과의 말씀 드립니다 여러분.
처음 써보는거고 처음 접하는 개념들이니까 생소하고 어려울 수 있으니 제대로 따라오지 못했다고 해서 너무 상심하지 말았으면 좋겠습니다.
나중에 개발을 본격적으로 배우고 프로젝트를 시작하면 반드시 사용해야 할 것이므로 보내드린 자료들 참고하시고 꼭 복습해주시길 바라겠습니다.
수업 때도 여러번 말했지만 모르는거 있으면 언제든지 편하게 질문해주세요..!!

+ 어제 집가서 올린다고 해두고 이것도 오늘 올리네요.. 미안합니다정말ㅜ
그래도 다들 열심히 해줘서 고마워요…!!!!!

This post is licensed under CC BY 4.0 by the author.