Day 01

이 글은 팀 개발을 위한 Git/Github 시작하기를 읽으며 실습한 내용을 정리한 것입니다.

Chapter 0 - 빠른 실습으로 Git, GitHub 감 익히기


01. Git, 그리고 GitHub

버전 관리란?

  • 내가 원하는 시점(버전)으로 이동할 수 있게 해주는 것이 버전 관리, 이를 도와주는 툴이 버전 관리 시스템
  • 팀 프로젝트에 참여하는 인원이 많을 수록, 프로젝트 기간이 길수록 어느 파일이 최종 업데이트 파일인지 확인할 길이 막막해진다. 그래서 여럿이 함께 작업하는 협업 프로젝트에는 버전 관리가 필요

Git, 그리고 GitHub

  • Git은 소스코드 버전 관리 시스템
  • GitHub는 Git으로 관리하는 프로젝트를 올려둘 수 있는 Git 호스팅 사이트 중 하나


02. 로컬저장소에서 커밋 관리하기

로컬저장소 만들기

  • 프로젝트를 진행할 폴더에 아래의 명령어(Git 초기화 과정)를 통해 로컬 저장소를 만듦(이 때 생성되는 .git 폴더를 로컬저장소라고 부름)
    git init

첫 번째 커밋 만들기

  • 버전 관리를 위해 내 정보를 등록해야 함

    git config --global user.email "github 가입 이메일"
    git config --global user.name "github 가입 username"
  • 그 다음

    git add
    git commit -m "커밋 메시지"
    git push

다른 커밋으로 시간 여행하기

  • 개발을 하다가 이전 커밋부터 다시 개발하고 싶다면 이전 커밋으로 돌아가면 된다.

    git log

    위의 명령어를 통해 지금까지 만든 커밋과 돌아갈 커밋 id를 확인하고

    git checkout 커밋id

    위 명령어를 사용하면 원하는 커밋으로 돌아갈 수 있음



03. Github 원격저장소에 커밋 올리기

원격저장소에 커밋 올리기

  • 원격저장소에 올리고 싶은 작업물이 있는 폴더로 이동한 뒤,

    git remote add origin 내 원격저장소 주소

    명령어를 통해 내 로컬저장소에 원격저장소 주소를 알려주기

    위의 명령어를 수행한 후에는 아래처럼 원격저장소에 push하면 됨

    git add
    git commit -m "~~~"
    git push origin master


04. GitHub 원격저장소의 커밋을 로컬저장소에 내려받기

원격저장소의 커밋을 로컬저장소에 내려받기

  • 원격저장소의 코드와 버전 전체를 내 컴퓨터로 내려받는 것을 클론(clone)이라고 한다. 클론을 하면 최신 버전뿐만 아니라 이전 버전들과 원격저장소 주소 등이 내 로컬저장소에 저장된다.

  • git clone 명령어 뒤에 원격저장소 주소를 적고, 한 칸 띄고 마침표를 찍어준다. 마침표는 현재 폴더에 받으라는 뜻이다. 점을 찍지 않으면 현재 폴더 안에 [iTshirt] 폴더가 생긴다.

    git clone https://GitHub.com/Cat-Hanbit/iTshirt.git .

원격저장소의 새로운 커밋을 로컬저장소에 갱신하기

  • 아래 명령을 입력한다. pull은 원격저장소에 새로운 커밋이 있다면 그걸 내 로컬저장소에 받아오라는 명령어
    git pull origin master


PART 1 - GUI 환경에서 버전 관리 시작하기

Chapter 1 - GUI를 위한 버전 관리 환경 구축하기

  • 현업에서도 CLI 형태로 조작하기 힘든 경우에는 GUI 프로그램을 많이 사용
  • 본인 개발에 편한 것으로 많이 선택
  • 보통 여러 사람이 같이 repository를 사용하게 되면, cherry-pick 해서 다른 사람의 브랜치 내용 일부를 가져와야 한다던지 다양한 문제를 겪을 수 있는데, 이를 CLI로 하면 불편함이 많아서 GUI 프로그램을 쓰는 게 더 편리하고 일도 금방 끝남

소스트리

  • 소스트리는 Git 사용을 도와주는 GUI 프로그램이다.

소스트리 화면 구성 둘러보기

  • 로컬저장소 목록(Local)

    • 컴퓨터에 저장되어 있는 Git 로컬저장소 목록을 보여준다.
    • Git으로 관리되는 모든 저장소가 자동으로 표시되는 것은 아니며, Add 탭에서 소스트리에 추가할 수 있다.
  • 원격저장소 목록(Remote)

    • 원격저장소 계정에 연결되어 있는 모든 원격저장소를 볼 수 있다.
    • GitHub 계정을 추가하면, GitHub에서 등록한 원격저장소 목록이 뜬다.
  • 원격저장소 클론(clone)

    • 원격 서버에 올라와 있는 Git 저장소를 내 로컬 컴퓨터에 다운로드 및 연동할 수 있다.
  • 로컬저장소 추가(Add)

    • 내 컴퓨터에 만들어져 있는 로컬저장소를 소스트리에서 관리할 수 있도록 추가한다.
  • 로컬저장소 생성(Create)

    • 내 컴퓨터에 있는 일반 폴더를 Git으로 버전 관리할 수 있도록 로컬 저장소를 생성한다. 모든 폴더는 자동으로 Git으로 버전 관리되는 게 아니고 이렇게 해당 폴더 내에 로컬저장소를 생성해야 그때부터 버전관리를 할 수 있다.
  • 새 탭(+)

    • 새로운 탭을 열어 다른 저장소를 관리할 수 있다.


Chapter 2 - 혼자서 Git으로 버전 관리하기


01. 로컬저장소를 소스트리에 불러오기

  • Add를 통해 내 로컬 저장소를 불러올 수 있다.
  • 왼쪽 사이드바에서 History를 클릭하면 내가 만들었던 커밋이 그래프로 보인다.


로컬 저장소의 정체는 .git 폴더

  • 위 처럼 수행했던 커밋들이 그래프로 보이는 것은 .git 폴더에 저장된 정보들 덕분이다. 이 폴더가 바로 로컬저장소이다. CLI 환경에서는 'git init', GUI 환경에서는 Create 아이콘을 클릭하고 폴더를 선택하면 만들어진다.
  • Git은 이 폴더에 버전 관리한 데이터와 이를 올릴 원격저장소의 주소 등 필요한 정보를 저장한다.


02. 소스트리로 커밋 만들고 푸시하기

vscode에서 새 파일을 만들고 수정하기


소스트리에서 파일은 선택(add)하고 커밋(commit)으로 만들기

  • 로컬에서 파일을 만들고 수정한 뒤 소스트리

    • 아까와 달리 그래프 최상단에 '커밋하지 않은 변경사항'이 생김
    • 이 텍스트를 선택하면 소스트리 하단의 [스테이지에 올라가지 않은 파일]에 방금 만든 파일이 보이는 걸 확인할 수 있다.
  • add

    • +버튼을 누르면 add가 됨
    • +버튼을 누르면(add를 하면) 파일이 [스테이지에 올라간 파일]로 올라간다.
  • commit

    • 아래쪽에 커밋 메시지를 작성하고 커밋 버튼 누르기
  • push

    • 최신 커밋에는 main 꼬리표가, 하나 이전 버전에는 [origin/main]이라는 꼬리표가 붙어있다. 이는 내 컴퓨터의 로컬저장소의 버전은 최신인데 원격저장소의 버전은 하나 이전의 버전인 상태라는 뜻이다.
    • 정리하자면 아무것도 붙지 않은 [master]는 내 컴퓨터 로컬저장소의 버전을, 앞에 origin이 붙은 [origin/master]는 GitHub 원격저장소의 버전을 가리키는 것이다.

    • 소스트리 상단의 Push 버튼을 클릭하고, Push 하면 된다.
    • 이 명령은 현재 줄기인 main의 모든 새로운 커밋을 원격저장소에 올리겠다는 뜻이다.(git push origin main과 동일)


03. Git 뜯어보기

커밋은 차이점이 아니라 스냅사진

  • SVN과 같은 버전 관리 시스템과 Git의 가장 큰 차이점은 Git이 커밋에 바뀐 것만 저장하는 것이 아니라 전체 코드를 저장한다는 것이다.
  • 전체를 저장하는 Git보다 차이점만 저장하는 SubVersion이 훨씬 용량도 작고 빠를 것 같지만, 차이점만 저장하는 방식은 버전을 보여줄 때 파일이 만들어졌던 맨 처음까지 거슬러 올라가며 바뀐 점을 모두 반영하는 계산을 해야한다.(Ex. README.md가 백 번 바뀌었다면 백 번의 계산을 모두 해야함)
  • 파일의 스냅샷을 저장하는 Git은 계산이 필요 없다. 바로 앞에서 바뀐 커밋이랑 비교하는 연산 한 번만 하면 된다.
  • 바뀌지 않은 파일은 이전 파일의 링크만 저장하기 때문에 용량도 적고 계산도 필요없다.

Git으로 관리하는 파일의 4가지 상태

  1. 프로젝트 폴더에 처음 Git 초기화를 하고 README.md와 app.js 파일 두 개를 만들었다. 이 두 파일은 한 번도 커밋되지 않은 파일이기 때문에 파일 상태는 '추적 안됨(untracked)'이다.
  2. add 명령어를 통해 두 파일 모두 스테이지에 올린다. 파일 상태가 '추적 안됨'에서 '스테이지됨(staged)'으로 변경된다.
  3. 스테이지에 있는 파일 전체를 commit 명령어를 통해 하나의 스냅샷, 즉 버전으로 만들었다. 파일 상태가 '수정 없음(unmodified)'로 변경된다. '수정 없음' 상태로 된 파일은 다시 다른 수정을 할 수 있다.
  4. push 명령어를 통해 원격저장소에 올린다.
  5. app.js 파일을 수정해서 파일 상태를 '수정 없음'에서 '수정함(modified)'로 변경하고, app.css 파일을 새로 만들어준다. 새로 만들었기 때문에 파일 상태는 '추적 안됨' 상태이다.
  6. 파일 상태가 '수정 없음'인 README.md 파일은 스테이지로 올릴 수 없다. 나머지 두 파일을 add를 통해 스테이지에 올린다. README.md 파일은 add하지 않았지만 변경사항이 없었기 때문에 이미 스테이지에 올라와 있다.
  7. 커밋을 통해 스냅샷을 만들어 준다. 이 커밋은 앞서 만든 커밋에 연결되어 있다. 따라서 앞 커밋에 비해 이번 커밋은 app.js가 수정되었고 app.css가 추가되었다는 것을 Git이 계산을 통해 알아낼 수 있다.
  8. push를 통해 새로 만든 하나의 커밋 또한 원격저장소에 올린다.

좋은 웹페이지 즐겨찾기