5. 깃허브를 사용해보자

문인범·2023년 10월 20일

Git

목록 보기
6/7
post-thumbnail

코딩애플의 깃 강의를 보고 정리한 글입니다.

깃으로 버전을 기록해놔도 컴퓨터가 불에 타버리면???
다 날라갑니다 ㅜㅜ
이럴때는 원격 repository(저장소)에 저장을 하여 나의 코딩자산을 안전하게 보관해 봅시다.

repository 란?

깃에서는 파일 버전을 저장해놓는 장소를 repository(저장소)라고 부릅니다.
로컬 폴더에서 .git(숨겨진 파일)이 저장소입니다.
또한 내가 만든 git repository를 온라인 repository에 저장할 수 있는데 깃허브가 이것을 지원합니다.
온라인에 저장할 경우 컴터가 날라가도 온라인에 저장되어 있으니 안심할 수 있습니다.
또한 협업시에 더 편하지 않을까요??

Github 사용법

git push

로컬 저장소에서 원격 저장소로 업로드를 하고 싶으면

git push -u 원격저장소주소 브랜치명

로 사용이 가능합니다.
여기서 -u 옵션은 뒤에 나오는 원격저장소 주소를 저장하겠다는 것입니다.
이렇게 하면 뒤에 또 push를 할 때에 주소를 생략할 수 있습니다. → git push 만 쳐도 push 가능

원격 저장소 주소는 github.com 에서 repository를 생성하면 나오는 주소를 사용하면 됩니다.아니면 원격 저장소에 드가면 나오는 링크에 .git 을 붙여도 똑같습니다!

이렇게 원격저장소를 만든 다음에 로컬 저장소에서 commit을 하고 push를 해보시면
와우 업로드 된 것을 확인할 수 있네요~~

아니면 변수 선언 하듯이 주소를 간단한 이름으로 저장하고 사용할 수도 있습니다.

git remote add 이름 원격저장소주소

이렇게 하면 이제 push 할 때 저렇게 지저분한 주소를 입력할 필요 없이 저장한 이름으로 대체가 가능합니다.
국룰은 origin 이라고 저장을 한다네요.

저장한 변수 목록을 보고 싶을 때

git remote -v

git clone

이제 다른 사람들과 협업을 하게 되었습니다.
저의 동료도 push를 하고 싶은데 원본 코드가 있어야 할 수 있지 않겠습니까??
그럴 때 git clone 으로 복붙이 가능합니다.

git clone 원격저장소주소 
git clone -b 브랜치명 원격저장소주소 -> 요건 특정 브랜치를 클론하기

자 이제 복붙도 했으면 원격 저장소에 이 사람을 등록까지 완료하면 진짜 push가 가능합니다.
Collaborators에 팀원들을 추가하여 협업이 가능합니다.

git pull

그 런 데
무작정 push를 하려고 하면 안될 수도 있습니다.
내가 push를 하려고 하기 전에 다른 사람이 먼저 push를 해 놓으면 저는 push를 할 수 없습니다.
무슨말이냐면
다른사람이 push를 해 놓은 상태에서 제가 push를 하려고 하면
원격 저장소에 있는 파일의 내용과 제 로컬 저장소에 있는 파일의 내용이 서로 달라 push를 못하게 막습니다.

대충 님 비상이라고 알려줍니다.
이럴 때 해결 방법은

push를 하기 전에 다른 팀원들에게 push 하지 말라고 선전포고를 해 놓아야 합니다.

는 농담이고
git pull 를 이용해 현재 원격 저장소에 있는 내용을 가져올 수 있습니다.

git pull 원격저장소주소 -> 만약 앞에서 -u를 했을 경우 주소 생략 가능

이렇게 원격 저장소가 업데이트 되어 있을 경우 git pull를 진행해 로컬 저장소를 업데이트 한 다음 git push를 진행하면 됩니다.
git pull의 원리는 git fetch + git merge 입니다.
git fetch 는 원격 저장소에 있는 commit들 중에서 로컬 저장소에 없는 신규 commit들을 가져오는 것 입니다.
git merge 는 이 가져온 commit들을 합치는 것 입니다.
그래서 git pull을 할 때에 팀원들이 같은 파일을 건들고 있을 경우 merge conflict가 날 수도 있다고 하네요.

어쨌든
git push가 안된다면 git pull을 했는지 생각해봅시다.

pull request

브랜치를 만들려고 한다면 로컬에서 브랜치를 생성해 push해도 되고 아니면 깃허브에서 생성해도 됩니다.

로컬에서는

git push 원격저장소주소 로컬브랜치명 -> 특정 브랜치만 원격 저장소로 올리기
git push 원격저장소주소 -> 전체 브랜치를 원격 저장소로 올리기

깃허브에서는
여기서 바로 브랜치 생성 가능!

그런데 브랜치를 만드는 이유가 결국엔 합치려고 하는 거자나요??
혼자서 일 할 경우에는 그냥 merge 하면 되는데 여러사람들이랑 협업할 경우엔 merge를 하기전에 코드를 검토하고 리뷰하는 과정이 필요할 것입니다.
그럴때 깃허브 에서는 pull request 로 사용할 수 있습니다.
쉽게 말하면 merge 요청한다고 볼 수 있습니다.
New pull request 로 pull request 를 만드면
여기서 어떤 브랜치를 merge 할건지 선택이 가능합니다.
이렇게 뜬다면 바로 pull request를 할 수 있고 만약 conflict가 날 경우 request를 보낸 다음에 conflict solve가 가능합니다.
여러가지 설명할 것들도 적어주고 생성해주시면 됩니다.
여기서 여러가지 코멘트를 주고받을 수 있으며 완벽하면 merge를 하면 됩니다.
merge를 선택하면 여러가지 옵션이 나오는데 앞에서 배운 것 처럼 3-way merge, squash and merge, rebase and merge 중에서 선택해서 진행하면 됩니다.
이러면 merge 완료!
멋지게 코인 채굴 브랜치가 합쳐졌네요.

참고사항

revert를 할 때 개인 프로젝트는 상관없지만 여러명이서 진행할 경우 팀원 모두에게 영향이 가기 때문에 왠만하면 하지 않는게 좋다고 합니다.

깃허브에서도 revert를 지원하는데 로컬저장소의 revert와 달리 이전 commit으로 돌아간 내용의 commit을 신규로 생성하는 방식으로 작동합니다.

profile
월클 개발자를 향한 도전일지

0개의 댓글