본문 바로가기

얄코의 too much 친절한 깃&깃허브 - Chapter04.깃허브 사용하기

by nyeongha 2024. 6. 27.

Chapter04.깃허브 사용하기

Lesson13.깃허브 시작하기

깃허브는 여러 개발자가 협업하여 프로젝트를 개발하고 관리하기 위한 플랫폼이며, 원격 저장소에서 코드나 문서등을 공유하고 이를 다른 사용자들이 참고하고 기여할 수 있게 도와줌.
가장 널리 쓰이는 코드 공유 및 협업 서비스.
깃허브는 깃으로 관리하는 모든 프로젝트를 온라인 공간에 공유해서 프로젝트 구성원들이 함께 소프트웨어를 만들어갈 수 있도록 도와줌.
깃허브는 같은 온라인 깃 저장소는 모든 업로드와 다운로드를 커밋 단위로 주고 받음.
한사람이 먼저 작업하고 커밋해서 버전을 만드록 업로드하면 깃허브상의 프로젝트는 해당 버전으로 최신화.
다음사람이 완료한 작업을 커밋해서 올리기 위해서는 반드시 깃허브의 최신 커밋을 먼저 다운로드해서 자기 컴퓨터에 있는 프로젝트에 적용하도록 강제됨.
커밋에서 충돌사항이 있다면 본인 컴퓨터에서 병합하든 해결한뒤에 비로소 자신이 작업한 커밋을 공유공간에 올릴 수 있음.
먼저 공유된 최신 버전으로 자기 프로젝트를 업데이트하고 나서야 작업물을 업로드 할 수 있음.
구성원이 각자 동시에 작업하되, 각자의 작업을 공유 공간에 올릴 떄는 깃허브가 중간에서 교통정리를 하는 셈.
그르므로 다른사람의 작업을 덮어씌우거나 충돌할 걱정없이 편하게 협업할 수 있음.

깃허브 시작하기

깃허브 토큰 만들기
-깃허브에 가입하면 저장 공간을 만들기 전에 프로젝트를 깃허브에 연동하기 위한 개인용 접근 토큰(Personal access token) 이라는 것을 만듦.
-깃허브 우측 상단 프로필 클릭->settings선택->왼쪽 메뉴에서 Developer settings클릭->화면 왼쪽에서 Personal access tokens-Tokens(Classic)클릭->generate a personal access token클릭
-new Personal access token(classic)화면에서 'Note'에 자신이 원하는 메모 입력
-Expiration은 보안을 위해 토큰의 만료기한을 정함.
-'Select scopes'는 이 토큰으로 어느 작업까지 권한을 허용할지 정함.
-새로 생성된 토큰 비밀번호는 다시 확인 할 수 없으므로 반드시 복사해서 메모장 등 다른 곳에 붙여넣기

앞으로 깃허브에 버전을 올릴떄마다 토큰 비밀 번호가 필요함

윈도우
-윈도우화면에서 시작을 클릭하고 자격증명관리자를 열어 WIndows자격증명을 클릭후 일반 자격증명추가를 클릭함.
-인터넷 또는 네트워크 주소를 git.https://github.com으로 입력
-사용자 이름에는 깃허브에 등록한 사용자이름을 입력하고, 암호에는 앞서 복사해둔 토큰 비밀 번호르 붙여넣은뒤 확인 버튼을 클릭


-키체인 접근앱을 실행한 후 왼쪽 탭에서 시스템을 선택
-github.com의 인터넷 암호를 더블클릭하고 사용자 이름과 토큰 비밀 번호를 입력해 저장함
-git gub항목이 없다면 다음과정으로 진행

소스트리에 깃허브 계정 추가하기

윈도우
-화면 상단 메뉴의 도구-옵션
-'옵션'대화상자의 인증 탭에서 git.https://github.com을 선택-편집
-'비밀번호 수정'대화상자에서 토큰 비밀번호를 붙여넣고 확인버튼 클릭
-'옵션'대화상자의 확인 버튼을 클릭


-소스트리[설정]을 열고 계정 텝으로 들어간 다음 [추가]버튼을 클릭
-인증방식은 베이직, 프로토콜은 HTTPS로 설정
-사용자 이름(깃허브 아이디)과 암호(토큰)를 설정

원격 저장소 만들기

새저장소 생성하기
-Create repository버튼 클릭
-'Repository name'에 프로젝트 이름 입력
-public과 private은 프로젝트 공개여부를 설정하는 옵션
-public을 선택하면 누구든지 이 프로젝트를 볼수있는 오픈소스
-private은 나와 내가 선택한 사람(팀원)만 프로젝트를 볼수있음
-맨아래쪽 Create repository버튼 클릭
새로운 프로젝트를 추가하려면 화면 왼쪽 상단에 있는 프로필을 클릭한 후 Repositories를 클릭해 저장소로 들어간다음 new버튼을 클릭

저장소에 팀원 추가하기

-Settings탭 클릭->Collaborators를 클릭한 후 manage access에서 add people버튼을 클릭합니다.
-대화상자에서 협업할 사람의 깃허브 사용자 이름이나 이메일 즈소를 입력하고 목록에서 사용자 이름을 선택한후 add (사용자 이름) to this repository버튼을 클릭해 추가

원격 저장소 사용하기

###저장소 푸시 설정하기
-푸시란 로컬 컴퓨터에 있는 저장소에서 작업한 내용을 원격 저장소로 전송하는 것을 의미
-깃허브 프로젝트 화면에서 Quick setup부분을 보면 Https와 SSH가 있고 깃허브 저장소의 URL이 표시되어있음
-git push명령을 사용해 자신이 만든 변경사항을 원격 저장소에 업로드
-git remote명령은 원격 저장소를 추가한다는 뜻
-깃허브의 원격 저장소 주소에 깃허브 저장소 주소가 들어감
-origin은 원격 저장소의 이름

1.git remote
원격 저장소 이름 origin은 사용자가 원하는 대로 바꿀 수 있음

git remote add origin https://github.com/이름

2.git branch
프로젝트의 기본 브랜치 이름을 main으로 바꿔주는 것

git branch -M main

 

3.git push
현재 브랜치가 원격 저장소의 어떤 브랜치와 연동될지를 지정
깃에서 푸시란 내 컴퓨터에 있는 커밋 내역중에서 아직 원격 저장소에 없는 커밋을 업로드 한다는 뜻
git push만 입력해도 origin/main브랜치로 푸시

git remote명령을실행해 보면 해당 프로젝트와 연결된 원격 저장소의 목록을 볼 수 있음.
git remote -v를 입력하면 저장소 주소도 확인할 수 있음.

파일 목록 상단 commits를 클릭하면 세부내용을 살펴볼수있음.

원격 저장소 연결 삭제하기
프로젝트의 깃에서 원격저장소를 삭제하려면 remove명령어를 사용
이것은 즐겨찾기 삭제처럼 원격 저장소와 로컬 프로젝트의 연결만 없애는 것으로 깃허브의 저장소는 삭제되지않음

git remote remove (origin 등 원격 저장소 이름)
깃허브의 저장소를 삭제하려면 깃허브 해당 저장소에서 Settings탭을 클릭한 후 화면 가장 아래쪽에 있는 Delete this repository버튼을 클릭

 

깃허브에서 프로젝트 다운로드
프로젝트 파일 뿐 아니라 깃의 관리 내역까지 모두 로컬 컴퓨터에 복사해야 하는 데, 이를 클론Clone이라고 함.
-깃허브 프로젝트 파일 목록 오른쪽 상단에 있는 Code버튼을 클릭
-Clone 항목 아래에 HTTPS 탭이 선택된 상태에서 저장소 주소의 복사 아이콘을 클릭

Zip파일로 다운로드하기
-Download Zip은 프로젝트 파일만 다운로드 할수 있음
-Download Zip으로 다운로드한 압축파일에는 깃의 관리내역이 포함되지 않았으므로 협업할 때 사용하면 안됨.
-압축파일을 확인하면 관리내역이 담긴 .git폴더가 없음

여러사람이 함께 작업할 수 있도록 프로젝트 파일과 깃 관리 내역까지 다운로드 하려면 앞서 만들어놓은 프로젝트를 다운로드할 폴더로 이동
빈폴더에서 마우스 우클릭- 더많은 옵션 표시-git bash here선택(맥에서는 iterm2앱을 열어 해당 폴더로 접근)

깃배시가 해당 폴더가 표시된 상태로 열림(vscode에서 파일-폴더열기후 터미널 탭에서 명령어 입력도 가능)
git clone 명령을 입력하고 복사한 저장소 주소를 붙여넣음.

git clone (원격 저장소 주소)

git log명령을 입력하면 지금까지 작업한 커밋내역을 볼수있음.
q를 입력하면 vim입력모드를 빠져나올 수 있음.

Lesson14. 푸시와 풀

푸시는 로컬 저장소에서 작업한 내용을 원격 저장소로 전송하는 것
풀은 원격저장소에서 변경한 내용을 로컬저장소로 가져오는 것
-로컬에서 변화를 일으킨후 git commit 명령으로 커밋

소스트리 작업 내역을 보면 내 로컬 컴퓨터에는 커밋 내역이 추가되어있음.
그 아래 origin/main은 변경사항이 반영되지 않아 커밋이 한단꼐 뒤쳐져잇음
origin/main은 원격의 깃허브에 만들어진 저장소를 뜻함

로컬의 변경사항을 원격저장소로 밀어 올려서 업데이트
git push 명령을 입력
git push -u origin main명령으로 현재 브랜치에서 기본값으로 푸시할 원격저장소와 브랜치를 설정했기 떄문에 여기서는 push명령만 써도 자동으로 해당 저장소의 브랜치에 커밋이 업로드됨.

원격 저장소에서 커밋 풀 하기

깃허브 원격 저장소의 커밋을 내 로컬 컴퓨터로 당겨오는 풀
나와 깃허브 저장소를 공유하는 다른 구성원의 컴퓨터에서 깃허브에 올린 프로젝트 폴더를 내 컴퓨터로 다운로드 한다는 뜻
1.깃허브 사이트의 파일 목록에서 edit this file아이콘을 클릭
2.내용을 추가후 commit changes를 클릭
3.깃 허브 저장소에 새 커밋이 추가되었지만 내 로컬 컴퓨터에는 변경사항이 적용되지 않은상태이므로 이 커밋을 내 컴퓨터로 다운로드->git pull명령어 실행

풀할 것이 있는데 푸시한다면?

현재 우리의 깃 저장소는 원격 저장소보다 작업 내역이 뒤쳐져있기 때문에 오류가 발생함

리베이스와 머지로 풀을 하는 두가지 방법

자신의 원격 저장소에서 무언가를 푸시하려면 내 작업내역이 원격 저장소의 최신 내역과 동일하게 맞춰져 있어야함.
푸시가 안될떄는 풀을 먼저 해야함
어느 순서에 맞출지에 따라 두가지 옵션이 사용됨

첫번째. 머지 방식으로 병합하는 방법

1.git pull 명령에 --no-rebase옵션을 붙여줌(맥에서는 출력결과에 :wq를 입력해 저장해야함
2.분기된 내역을 합치면 로컬 컴퓨터와 원격 저장소의 작업내역이 동기화 되므로 푸시를 할 수 있는 상태가 됨.

두번째. 리베이스를 사용하는 방법

원격저장소의 타임라인을 유지하고 로컬 컴퓨터의 내 작업을 떼다가 원격 저장소의 커밋에 붙이는 것
원격에서의 변화가 먼저 발생한 것으로 하고, 내 작업은 그 이후에 적용된 것으로 하는 것.
git pull명령을 입력하고 --rebase옵션을 붙임.
git push명령을 실행하면 성공적으로 푸시됨.

git pull --no-rebase방식은 로컬 컴퓨터와 원격 저장소의 어긋난 타임라인을 한군데로 모아주는 방식
git pull --rebase방식은 일단 타임라인을 원격에 맞춰 붙인 다음 내작업을 그 다음에 붙이는 것.

 

협업상 충돌 발생 해결하기

원격 저장소의 작업을 풀해서 받는 상황에서의 리베이스는 성격이 다른것이므로 써도 괜찮음.

###로컬의 작업 내역을 강제로 푸시하기

git push --force
남들과 같이 작업하는 도중에 강제 푸시를 하면 다른사람의 작업이 날아갈수 있으므로 강제 푸시는 혼자 프로젝트 작업을 하거나 혹은 협업 하면서 원격 저장소에 있는게 뭔가 잘못됐다고 서로 합의가 된상태에서 한쪽 로컬 컴퓨터에 있는 작업 내역대로 원격 저장소의 작업을 맞출 때 진행

Lesson15. 원격 저장소의 브랜치 다루기

로컬 컴퓨터에서 브랜치 만들어 원격 저장소에 푸시하기

1.로컬에서 브랜치를 생성하고 생성한 브랜치로 이동

2.원격 저장소의 대상 브랜치를 from-local로 명시하고 푸시하기 위해 다음 명령 실행

--set-upstream은 -u로 축약해서 쓸 수 있습니다.

 

3.해당 브랜치에서 임의로 커밋을 해봄, 원격 저장소에서만 변화가 일어남, 로컬 컴퓨터에서 브랜치 목록을 살펴봄

git branch --all(또는 -a)
remote/origin~~은 원격 저장소의 브랜치임
소스트리 왼쪽 메뉴 하단의 원격을 클릭하면 원격 저장소의 브랜치를 확인할 수 있음

원격 저장소의 브랜치를 로컬에서 풀하기

1.깃허브에서 브랜치 추가
2.해당 프로젝트 터미널에서 git branch -a를 입력-현재 로컬의 깃은 원격 저장소의 변화를 업데이트 받지않았기 때문에 원격에 추가된 브랜치가 나타나지 않음.
3.git fetch명령을 실행후 git branch -a를 실행하면 깃허브에서 생성한 브랜치가 보임.
4.로컬에도 같은 이름의 브랜치를 복사해서 연결하기 위해 git switch명령을 적용
5.-t옵션은 해당 원격 브랜치와 연결되어 이를 추적(track)하고 전담하는 브랜치를 로컬에 만든다는 의미
6.로컬브랜치와 원격 브랜치연결
7.git switch 명령을 사용해 from-local브랜치로 이동하고 git pull명령을 실행-변경사항이 저장된것을 확인할수 있음

원격 저장소의 브랜치 삭제하기

원격의 브랜치를 삭제하려면 git push명령에 --delete옵션을 사용함

git push (원격 저장소 이름) --delete (원격 저장소의 브랜치 이름)

Lesson16. 소스트리로 원격 저장소의 브랜치 다루기

원격저장소에서 from-remote브랜치를 만들고 소스트리에서 확인하려면 원격에서 브랜치를 생성후 소스트리 도구 모음에서 패치를 클릭함.

 

summary
1.깃허브 시작하기

원격 저장소 보기 : git remote
원격 저장소 연결 삭제하기 : git reomte remove
깃 저장소 복제하기 : git clone

 

2.푸시와 풀

로컬에서 원격 저장소로 푸시하기 : git push
원격 저장소에서 로컬로 풀하기 : git pull
머지 방식으로 병합하기 : git --no-rebase
원격 저장소에 맞춰 리베이스 하기 : git push --rebase
로컬의 작업 내역을 강제로 푸시하기 : git push --force

 

3.원격 저장소의 브랜치 다루기

로컬과 원격 저장소의 브랜치 확인하기 : git branch --all(또는 -a)
원격 저장소의 변경사항 확인하기 : git fetch