
github란
로컬 파일에서
git init
을 하면 .git이라는 파일이 몰래 생긴다.
맥북은 cmd + shift + . 을 하면 숨김파일을 볼 수 있다.

.git은 파일버전을 저장해두는 장소로 repository(저장소)라고한다.
github는 온라인 repository라고 생각하면된다.
github에 저장해두면 내 컴퓨터가 박살이 나도 파일을 다시 가져올 수 있고 다른 사람들과의 협업도 쉬워진다.
github 사용법
github 가입하고 repository를 만들어보자.

Repositiory name을 설정해주고
다른 사람들에게 보여줄거면 Public
혼자 볼거면 Private 해주면된다.
완료하면 git 명령어가 나오는데 그거대로 따라하면 된다.
1. 작업 폴더를 만든 다음 터미널을 열어서 git init을 한다.
2. github에서는 기본 브랜치 이름을 master가 아니라 main으로 하라고 한다.
아래 명령어를 입력하면 메인 브랜치를 main으로 바꿀 수 있다.
git branch -M main
항상 메인 브렌치를 main으로 하려면 아래 명령어를 입력하면된다.
git config --global init.defaultBranch main
3. commit 좀하고
4. 원격 저장소에 올리면 된다.
로컬저장소 -> 원격저장소로 업로드를 하면된다. 아래 명령어를 입력한다.
git push -u 원격저장소주소 main
// origin에 원격저장소 주소를 담는 방법도 있다.
git push -u origin main
- 로컬저장소의 main 브랜치를 원격저장소에 올리라는 뜻이다. (다른 브랜치도 가능)
- github 로그인하라고 하면 로그인하면된다.
- -u 옵션은 방금 입력한 주소를 기억하라는 뜻이다. 다음부터 push할때는 git push만 입력하면된다.
- 원격저장소주소는 아래 사진의 빨간박스 부분이다.

이렇게 하면 로컬에 있던 파일들이 github에 저장된다.
원격저장소주소를 길게 입력하기 귀찮으면.. origin
그니깐 https://github.com/pizzaYami/makingTest.git 이부분을 매번 입력하기 귀찮으면
변수에 담는 방법이 있다.
git remote add origin https://github.com/codingapple1/lesson.gitorigin이라는 변수에 https://github.com/pizzaYami/makingTest.git 를 담았다.
origin을 입력하면 저 링크가 나온다.
변수목록을 보고 싶으면 git remote -v를 입력하면된다.
원격저장소에 있는거 그대로 내려받고 싶으면 git clone
git clone 원격저장소주소하면된다.
그러면 원격저장소에 있던 내용을 그대로 복제해준다.
팀원이 git clone을 하게 하려면
팀원이 github 아이디가 있어야하고
그 팀원의 아이디를 Collaborators 메뉴에 등록해놔야한다.

github에 올리고 싶지않은 파일은 .gitignore 에 저장하면된다.
거기 명시한 파일들은 git add . 해도 스테이징 되지 않아 편리하다
node_modules 이런 폴더 이런 것들은 올리지 않는다.
git pull
팀원이랑 프로젝트를 할 때 팀원이 push를 하고 내가 push를 하려고하면 에러가 뜬다.
예를 들어 팀원이 hello라는 파일을 만들고 push했다고 하자.

나는 저 사실을 모르고 hi라는 파일을 만들고 push하려고하면

에러가 뜬다.
왜냐하면 팀원이 push한 내용이 내 로컬 컴퓨터에 업데이트가 안되어있는 상태에서 push를 하려고 했기 때문이다.
이럴때는 팀원이 push한 내용을 내 로컬에 가져와 저장한 다음 push를 해주면된다.
그게 바로 git pull이다.
// git push -u origin main 을 했었다면 -u 때문에 git pull만 해도 된다.
git pull
// -u를 안했다면 아래처럼
git pull 원격저장소주소
// 원격저장소주소를 origin에 저장했다면
git pull origin
// 특정 브랜치만 pull하고 싶다면
git pull 원격저장소주소 브랜치
git pull 명령어는 git fetch + git merge의 축약어이다.
git fetch는 원격저장소에 있는 commit 중에 로컬에 없는 신규 commit을 가져오라는 뜻이고
git merge는 그걸 merge 하라는 뜻이다.
pull request

신기능을 만들고 싶으면 main 브랜치에서 코드짜지말고
다른 브랜치를 만들어서 거기에서 개발하는 것이 안전하다고 했다.
원격 repository (저장소)에 브랜치 만들기
1. github 사이트에서 직접 브랜치 생성가능

여기에 입력해서 branch를 바꾸거나 새로 만들 수 있다.
2. 로컬 repository에서 브랜치 생성가능
로컬저장소에서 브랜치 생성해서 원격저장소에 git push 해도된다.

git push 원격저장소주소 로컬브랜치명
이렇게 하면 브랜치를 원격레파지토리에 추가할 수 있다.
git push 원격저장소주소 로컬브랜치명 하면 특정 로컬저장소 브랜치 -> 원격저장소
git push 원격저장소주소 하면 모든 로컬저장소 브랜치 -> 원격저장소 입니다.
Pull request하기
새로운 브랜치를 만들면 언젠가는 main브랜치에 합쳐야 기능이 완성된다.
합치려면 git merge 명령어로 합치면 끝이다. 그리고 git push 하면 끝인데
팀끼리 일하는 경우 merge 하기 전에 팀원들과 토론하거나 검토하는 경우가 많다.
그래서 github는 pull request라는 기능을 만들었다.
그냥 쉬운 말로 merge request라고 한다.
Pull request 하는법

▲ 아무나 상단 Pull requests 메뉴에서 초록버튼 누르면 pull request 생성이 가능하다.

▲ 그 다음엔 어떤 브랜치를 어디에 합칠 것인지 선택하고
하단에서 commit 내역, 변경내역 잘 보고
초록버튼 누르면 pull request가 열린다.

▲ 그럼 Pull requests 메뉴에서 이렇게 확인가능한데
토론공간이 있는데 거기서 코드를 리뷰하면 된다.
브랜치끼리 수정사항이 겹치면 Resolve conlicts를 해서 두 가지 수정사항 중에 하나를 선택해야한다.

그러면 merge pull request가 가능하다고 뜬다.
(Resolve conlicts안해도 되면 그냥 가능)

merge를 할 때 3가지 옵션이 있는데 여기서 택1을 하면된다.
1. create a merge commit

새로운 merge commit을 하나 생성해주는 3-way merge를 실행해준다.
- main 브랜치 조회시 합쳐진 브랜치의 commit 내역도 전부 나옴
- 터미널에 git log --oneline --graph 해보면 합쳐진 브랜치도 그림으로 나옴
- 그래서 commit 내역이 많으면 더러워짐
2. squash and merge

- 합쳐질 브랜치의 commit 내역을 하나로 합쳐서 main 브랜치에 신규 commit을 생성해준다.
- git log --oneline --graph 해보면 합쳐진 브랜치 안나옴
- commit을 하나로 합쳐서 깔끔해진다.
3. rebase and merge

- 합쳐질 브랜치를 main 브랜치 최신 commit으로 rebase하고나서 fast-forward merge 비슷한걸 해준다.
- 결과는 squash and merge와 비슷한데 합쳐질 브랜치의 commit 내역이 전부 보존된다.
- 애도 git log --oneline --graph 해보면 합쳐진 브랜치 안나옴
요약
저장소 생성 git init
저장소 이름 main으로 설정 git branch -M main
주소 변수에 담고싶으면 git remote add origin 원격저장소 주소
git add .
git commit -m "메시지"
원격저장소에 저장 git push -u 원격저장소주소 main 또는 git push -u origin main
에러뜨면 -> git pull
원격저장소에 있는거 다운받고싶으면 git clone 원격저장소 주소
원격저장소에서 브랜치 만들어 merge하기 전에 다른 사람이 리뷰하게 하기 pull request
래퍼런스
애플코딩
'개발 > github' 카테고리의 다른 글
| git 커밋컨벤션 설정법 (0) | 2023.08.16 |
|---|---|
| git stash (0) | 2023.04.15 |
| branch와 merge (1) | 2023.04.13 |
| git 하는법 (0) | 2023.04.13 |
| git 설치법 (맥북) (0) | 2023.04.13 |
댓글