https://codingapple.com/course/git-and-github/
(무료) 매우쉽게 알려주는 git & github - 코딩애플 온라인 강좌
Next.js는 프론트엔드부터 서버까지 만들 수 있는 React기반 프레임워크입니다. 이것만 사용해도 풀스택 웹개발이 가능합니다. Next.js 사용시 서버사이드 렌더링이 쉽기 때문에 React, Vue만 사
codingapple.com
마찬가지로 위의 무료 강의를 참고한다.
이번에는 github를 사용하는 방법을 중점으로 다룬다.
repository란?
앞서 배운 git이 파일버전을 저장해두는 장소를 repository라고 한다.
로컬 작업폴더에는 .git 폴더가 있는데 그게 repository 이다.
실제로 개발에서는 온라인 repository를 많이 사용한다.
많이 사용하고 있는 github.com에서 온라인 repository를 만들고자한다.
github 가입하고 repository 하나 만들기
원격 저장소를 제공해주는 github.com에 들어가서 가입하고 원격저장소를 하나 만든다.
로그인 후에 우측 상단 + 버튼 누르면 repository 하나 만들 수 있다.
작업폴더에서 git으로 commit을 해본다.
1. 작업폴더를 하나 만든 다음 터미널에서 열어서 git init 합니다.
그게 실은 로컬 저장소 (리포지토리) 생성하는 짓임
2. github.com은 이제 기본 브랜치 이름을 master가 아니라 main으로 사용하라고 강요한다.
그래서 우리 로컬 작업폴더에 있는 기본 브랜치 이름도 main으로 변경해준다.
git branch -M main
3. 그 다음 파일 만들어서 commit 해보기.
Github에서 만든 원격 저장소에 올리기
로컬저장소 -> 원격저장소 옮기는 방법
git push -u 원격저장소주소 main
- 로컬저장소의 main 브랜치를 원격저장소에 올리라는 뜻. 다른 브랜치도 올릴 수 있음
- github 로그인하라고 뜨면 로그인하면 된다.
- 참고로 -u 옵션은 방금 입력한 주소 기억해두라는 뜻이다.
-> 다음부터는 주소를 길게 입력안하고 git push만 입력해도 잘된다.
※ 원격저장주소를 입력하기 번거로울 때 -> 주소를 변수에 저장하자!
git remote add 변수명 저장주소
이러면 git push -u 변수명 main 이라고 써도됨
(참고) 실은 -u는 방금 입력한 주소를 기억하라는 뜻이라
-u 붙여서 1번 했었으면 나중엔 git push 까지만 입력해도 된다.
(참고) 변수목록을 살펴보고 싶으면 git remote -v 입력
원격저장소에 있던거 그대로 내려받기
git clone https://원격저장소주소
.gitignore
원격저장소를 효율적으로 쓰고 싶으면 쓸데없는 파일은 commit 해서 올리지 않는게 좋다.
.gitignore 파일을 하나 만들면 저장소에 올리지 않을 파일들을 쉽게 명시 가능하다.
거기 명시한 파일들은 git add . 해도 스테이징이 되지 않아서 편리함.
웹개발을 예로 들면
node_modules 이런 폴더, 개인정보들이 들어있는 .env 파일 이런 것들은 올리지 않는다.
(package.json 파일만 잘 있으면 터미널에서 npm install 입력하면 자동으로 node_modules 폴더가 생성된다.)
git push
타인과 협업하는 방법
Github > Settings > Collaborators > 팀원 github 아이디 등록하기
원격저장소에 변경사항이 생기면 git push를 할 수 없음.
-> git pull 먼저 하자!
git pull
git pull을 이용하면 원격저장소 내용을 가져올 수 있음.
git pull 원격저장소주소
-> 원격저장소에 있던 모든 브랜치 내용을 가져와서 로컬저장소에 합쳐라
이제 git push가 가능하다.
(참고)
- git pull 명령어는 git fetch + git merge 축약어
- git pull 원격저장소주소 브랜치명 입력하면 특정 브랜치만 가져올 수 있다.
- origin이라는 변수명을 등록해놨으면 당연히 사용가능
- 예전에 -u 했었으면 git pull, git push까지만 입력해도 된다.
개발자가 여러 명이라면?
개발자가 너무 많다면 원격저장소 브랜치를 만드는 것이 안정적이다.
브랜치를 생성하려면
1. github.com에서 브랜치 직접 생성
- main 브랜치명 버튼 누르면 브랜치를 바꾸거나 새로 만들 수 있다.
2. 로컬 repository 에서 브랜치 생성
로컬저장소에서 브랜치 생성해서 원격저장소로 git push 해도 된다.
git branch 브랜치명
git switch 브랜치명
git add .
git commit -m '새로운 기능 추가함'
- 새로운 브랜치 만들고
- 로컬에 먼저 commit 하기
gt push 원격저장소주소 로컬브랜치명
- 로컬 브랜치를 원격에 올리기
(참고)
git push 원격저장소주소 로컬브랜치명 하면 특정 로컬저장소 브랜치 -> 원격저장소
git push 원격저장소주소 하면 모든 로컬저장소 브랜치 -> 원격저장소
pull request 하기
브랜치를 원격저장소에 올렸다면 main 브랜치와 합치는 과정이 필요하다.
git merge 명령어로 합치고 git push 해도 되지만
merge 하기 전에 토론하거나 검토하는 과정이 필요할 수 있다.
github.com 에서는 pull request 기능을 제공한다.
New pull request를 누르면 내 브랜치를 merge해달라는 요청을 할 수 있고 팀원끼리 코드검토가 가능하다.
- 그 다음에 어떤 브랜치를 어디에 합칠 것인지 선택하고 하단에서 commit 내역, 변경내역을 확인한다.
- 초록 버튼을 클릭하면 pull request가 열린다.
- merge 하기로 했다면 merge 옵션 중 택1 하면 된다.
create a merge commit 하면
새로운 merge commit을 하나 생성해주는 3-way merge를 실행함.
- main 브랜치 조회시 합쳐진 브랜치의 commit 내역도 전부 나옴.
- 터미널에 git log --oneline --graph 해보면 합쳐진 브랜치도 그림으로 나옴
- 그래서 commit 내역이 많으면 복잡하고 더러워보일 수 있다.
squash and merge 하면
- 합쳐질 브랜치의 commit 내역을 하나로 합쳐서 main 브랜치에 신규 commit을 생성함.
- git log --oneline --graph 해보면 합쳐진 브랜치 안나옴 .
- commit을 하나로 합쳐서 main 브랜치로 순간이동 시켜주는 행위라 가장 깔끔.
rebase and merge 하면
- 합쳐질 브랜치를 main 브랜치 최신 commit으로 rebase하고나서 fast-forward merge 비슷한걸 해준다.
- 결과는 squash and merge와 비슷한데 합쳐질 브랜치의 commit 내역이 전부 보존됨.
'개발 스터디' 카테고리의 다른 글
[git & github] 개발 기초 스터디 0주차 - git (0) | 2024.09.02 |
---|