Git과 Github는 개발자의 "협업 도구"이다. 개발자라면 땔래야 땔 수 없는 깃과 깃허브를 알아보자.
깃은 분산 버전 관리 시스템(DVCS)이다.
우리가 발표자료를 만들 때 발표 초안ppt -> 발표 최종본ppt -> 발표 진짜 최종본ppt 순으로 버전을 업데이트 시킨 경험이 있을 것이다.
깃을 사용하면 최종본을 잘못 만들고 저장 했을 때, 이전(혹은 또 다른) 버전인 초안ppt로 이동할 수 있도록 버전을 관리할 수 있다.
깃허브는 홈페이지를 기반으로 서비스 해준다.
우리가 개인적인 발표자료는 개인 컴퓨터에 보관하지만, 팀 과제라면 어떨까?
깃허브를 사용하면 github 사이트 저장소에 자료를 저장할 수 있다.
그리고 이 저장소는 타인과 공유할 수 있다.
이렇게 개발자들은 Git(git 명령어)과 Github(홈페이지 저장소)를 사용하여 팀원과 협업, 프로젝트 버전을 관리한다.
staging area
commit할 파일들을 저장
local repository
PC내부의 저장소
remote repository
github 원격 저장소
깃 명령어는 Git을 설치를 해야 사용할 수 있다. 깃은 깃 사이트에서 다운로드 하면 된다.
git config --global user.email "you@example.com"
처음 깃을 사용하면 커밋을 할 때, 사용자 인증을 요구할 수 있다.
git init
깃허브 저장소에 올리고 싶은 폴더에서 .git폴더를 생성한다.
깃허브에 내 프로젝트를 올릴 경우
git add -> git commit -> git push
git add 파일이름
파일이름 대신 .을 사용하면 변경된 모든 것을 add시킨다.
git commit -m "커밋 메세지"
변경사항을 확정하고, 커밋 메세지에 설명을 간단하게 작성한다.
git push 저장소URL main
확정한 변경사항을 github 원격 저장소에 반영한다.
원격 저장소URL은 github에서 repository를 만든 후 해당 repository에서 사진의 빨간 부분을 누르면 주소가 복사된다.
git remote add 변수명 저장소URL
원격저장소URL은 길기 때문에, 편의를 위해 변수에 담아두는게 좋다. 그리고 변수명은 관례적으로 origin을 사용한다.
git remote -v
remote 현황 확인
repository에서 내 컴퓨터(로컬)로 가져오기
1. git clone
2. git fetch
3. git pull
git clone origin(혹은 저장소URL)
깃허브 repository의 프로젝트를 그대로 가져옴 (단순 복붙)
git pull origin
팀원이 공유하고 있는 repository에 push한다면, 현재 내가 작업하고 있는 로컬의 프로젝트에 팀원이 push한 내용을 반영할 필요가 있다.
pull은 나의 프로젝트에 변경사항을 반영해주는 기능을 한다.
내부적으로 fetch + merge 작업을 하는 것 이다.
git fetch origin
실제로 변경사항을 반영하지 않고, 팀원이 업데이트한 repository 프로젝트와 내가 작업하고 있는 프로젝트 사이의 변경사항만 알려주는 것 이다.
git fetch origin을 했을 경우 콘솔에 아무것도 뜨지 않는다면 변경사항이 없는 것이고, 변경사항이 있다면 아래와 같이 8a24d8c커밋(로컬 main)과 402e70e커밋(origin의 main브랜치) 사이의 변경사항이 존재한다는 것을 알려준디.
※실제 변경사항을 알고싶다면?
-> git diff main origin/main 을 입력한다.
(fetch로 가져온 후 git diff를 해야한다.)
※여기에 merge까지 한다면 pull의 기능을 한다.
-> git merge origin/main
프로젝트 버전(commit or branch) 이동
1. git reset
2. git switch
git branch 브랜치이름
프로젝트의 복사본(브랜치)를 생성한다.
git branch -d(-D) 브랜치이름
-d는 병합이 된 브랜치를 제거할 때
-D는 병합이 안된 브랜치를 제거할 때 사용한다.
git reset 커밋ID
현재 시점부터 입력한 commit 시점의 변경사항들을 staging area로 되돌리고, 입력한 commit 시점으로 돌아간다.
git checkout 커밋ID
특정 커밋으로 이동한다.
git switch 브랜치이름
특정 브랜치로 이동한다.
git diff 커밋ID1 커밋ID2
커밋1과 커밋2의 차이점을 보여준다.
git status
git add와 commit의 상태를 알려준다.
git log --oneline
commit 기록을 확인한다. oneline을 사용하면 모든 커밋들의 로그가 한줄로 표시된다.
git merge 브랜치이름
main 브랜치와 입력한 branch를 병합한다.
git restore .
⚠ staged 안된 코드를 작성하기 전 코드로 되돌린다.
git restore --staged 파일이름
staged 된 코드를 staging 저장소에서 뺀다.
git revert 커밋ID
특정 커밋의 변경사항을 삭제한다.
다음은 깃허브 페이지 만드는 거 해야겠따.