✔️ Git이란, 버전 관리 시스템(Version Control System) 중 하나이다.
말 그대로 '버전'을 관리할 수 있는 수단이다. 수정 사항이나, 업데이트 사항 등을 그때 그때 바로 반영 할 수 있도록 하는 시스템을 말한다.
소프트웨어에는 버전관리가 필요하다. 꼭 클라이언트의 요청이 없더라도, 버전별로 이전 버전의 기능을 다시 가져오게 될 수도 있고, 누군가 잘못된 코드를 구현한다면 복원해야 될 때도 있기 때문이다.
그래서 언제든 특정 시점의 버전을 다시 이용하는데 문제가 없게끔 변경된 내역을 관리해줘야 하는 것이다. 이러한 버전관리에 상당한 이점을 가지고 있는 Tool이 Git이다.
여러 명의 개발자들과 하나의 프로젝트를 진행할 때 각자의 파트를 담당하여 작업하고, 작업사항을 업데이트하고, 서로의 작업 로그를 살펴볼 수 있어야 하며, 이에 더해 버전별 백업도 실시간으로 진행해야 한다.
여러 명이 실시간으로 작업하는 프로젝트 특성상 클라우드나 메일 등을 통해 관리를 한다면 상당한 어려움을 겪을 것이다. 따라서 작업 중 실시간으로 작업내역을 공유할 수 있는 원격저장소가 필요하다. 이 원격저장소가 Github이다.
우선 Git설치를 해야한다. 밑의 URL을 참고하자.
Mac M1에서 Homebrew를 이용한 Git 설치법
Git을 설치했다면 Local에 Git을 관리할 경로를 설정해줘야 한다. 터미널을 실행하면 처음 나오는 기본 경로에 gitProjects라는 폴더를 만든다. (터미널에서 cd명령어를 이용한 경로이동이 간편하기 때문)
Git 버전관리는 사람들을 모아 사진찍기에 비유할 수 있다. 우선 내가 관리하고싶은 프로젝트의 폴더를 위에서 설정했던 gitProjcets에 위치시킨다. 해당 프로젝트 이름: secondProject
후에 이제 Git을 이용한 버전관리는 CLI를 통하여 진행할 것이다.
터미널을 실행시킨 후 cd명령어를 이용하여 해당 프로젝트의 폴더에 위치시킨다.
우선 사진을 찍으려면 사진사를 고용해야 한다. 사진사 고용은 프로젝트를 시작할 때 최초 1회만 하면 된다. 다음의 명령어를 터미널의 해당 프로젝트 경로에서 실행시키면 된다.
git init
위의 명령어를 실행시키면 .git이라는 폴더가 생성될 것이다.
만약 폴더가 보이지 않는다면 cmd + shift + . 을 이용하여 숨김파일 보기를 설정하자!
사진사 고용은 성공적으로 마쳤다. 이제 단체 사진을 찍을 사람들을 불러 모아야 한다. 해당 프로젝트에 2개의 txt 파일이 있다.
git status
위의 명령어를 이용하여 현재 프로젝트 파일들의 상태를 확인해보자.
위의 사진처럼 빨간 글씨인 이유는 현재 사진 찍을 사람들은 구했지만, 사람들이 모두 이곳 저곳 흩어져있어 사진 찍을 준비가 안된 것이다.
git add .
위의 명령어를 이용하여 지금 사진을 찍을거니, 모두 모여봐~ 라고 명령을 한다.
다시 git status 명령어를 이용하여 상태를 확인해보자.
빨간색의 텍스트가 초록색의 텍스트로 바뀌었다. 이 상태는 현재 사진 찍을 사람들을 전부 구했고, 한 곳에 모여 사진 찍을 준비가 완료되었다. 라는 의미이다.
사진사도 고용하였고, 사진찍을 사람들까지 다 모였으니 이제 사진만 찍으면 된다.
git commit -m "inital commit"
사진의 이름은 "inital commit"이며, 이 이름은 해당 사진이 어떤 사진인지 명시해주면 좋다.
ex) 이 프로젝트는 이러한 변경점이 있는 프로젝트 버전이다. 라고 명시
사진이 잘 찍혔는지 git log
명령어를 이용하여 확인해보자.
git log
는 찍은 모든 사진들이 있는 앨범이며, commit의 이름과 해당 commit의 고유번호를 담고있다.
현재 사진은 "inital commit"이란 사진밖에 없으며, 이 사진의 고유번호는 14d7~~~4b 이다.
프로젝트를 진행하면서 수많은 변경사항이 존재한다.
변경에 대한 버전을 기록한 것이 commit이다.
만약 사진을 찍는 사람들 중 한 명만 바뀌면 어떻게 될까?
해당 프로젝트 파일 중 test1.txt의 내용만 변경해자. 변경 후 git add .
을 이용하여 사진찍는 사람들을 다시 모아보자!
후에 git commot -m "second commit"
을 이용하여 다시 사진을 찍어보자!
사진을 찍으면 1 file changed
라며, 변경사항이 하나 있다고 말해준다.
만약 여러 사진들 중 과거 사진으로 업데이트를 하고싶다면 어떻게 해야할까??
아까 git log
를 이용하면 찍었던 모든 사진을 볼 수 있다하였다. 내가 원하는 과거사진의 고유번호를 이용하여 해당 commit의 상태로 돌아가자!
git reset —hard
+ 해당 commit의 고유번호
지금까지 Local에 대한 버전관리에 대해 알아보았다. Local 버전관리에 대해 정리하자면
git init
git add .
git commit -m
을 이용하여 하나의 버전(commit)을 생성한다.
이제 변경사항들이 완료된 commit을 원격 저장소인 Github에 저장해야 한다.
git config ---global user.name 닉네임
: 닉네임은 자신의 github의 닉네임을 적어야 함.
git config --global user.email 이메일
: 이메일은 자신의 github의 이메일을 적어야 함.
git config --list
를 이용하여 config가 설정이 잘 됐는지 확인해보자!
Github에 로그인을 하여 해당 프로젝트를 업로드시킬 Repository를 생성한다.
(Repository 이름 : secondProject)
Repository를 생성했다면 다음과 같이 창이 뜰 것이다.
여기에서 밑의 명령어가 중요하다.
git remote add origin https://github.com/jihunhan98/secondProject.git
이 명령어는 Local(나의 Desktop)과 Remote(Github)를 서로 연결해주는 것이다.
이 명령어를 터미널의 해당 프로젝트 경로에서 실행시키자!
이제 해당 프로젝트를 push명령어를 이용하여 해당 버전(commit)을 Github에 업로드한다.
git push origin main
위의 명령어를 입력하면 github의 이메일과 비밀번호를 입력하라 한다. 히지만 자신의 이메일과 비밀번호를 입력하면 다음과 같은 오류가 뜬다.
깃허브의 인증 방식이 바뀌었기 때문인데, 이를 해결하려면 토큰을 발급받아야 한다. Github에 들어가서
profile -> develpoer settings -> personal access token -> Token(classic) 의 경로로 들어가여 토큰을 발급받는다. 관련 URL => 깃허브 토큰 발급받는 방법
이제 비밀번호를 해당 Github의 비밀번호가 아닌 발급받은 토큰번호로 입력한다.
그러면 성공적으로 Github에 해당 프로젝트가 업로드된다.
Github의 해당 Repository를 확인해보자.
다음과 같이 정상적으로 업로드가 됐다. 옆의 2 commits
를 눌러보면 해당 프로젝트의 모든 commit을 확인할 수가 있다.
Git은 어느 컴퓨터에서나 사용할 수 있도록 해야한다. 이제 해당 Local에서 해당 프로젝트인 secondProject를 삭제 후 Remote에 저장된 secondProjcet를 불러와보자.
git clone url
위의 명령어에서 url은 Github의 해당 Repository의 url을 의미함.
위의 명령어를 실행하면 정상적으로 프로젝트가 불러와진다.
만약 다른 개발자가 변경한 프로젝트를 Github에 올려, 현재 나의 프로젝트와 다르면 어떻게 해야할까??
해당 프로젝트의 경로에서 git pull origin main
를 이용하여 Remote에서 해당 프로젝트를 가져오자!