본문 바로가기

문과 코린이의, [Git] 기록

[문과 코린이의 IT 기록장] GitHub 사용하기 (GitHub란?, GitHub 사용하기, GitHub 가입하고 토큰 만들기, GitHub Repository 생성 방법, GitHub Repository 삭제방법, 원격 저장소 사용하기, Push와 Pull, 원격의 브랜..

반응형

[문과 코린이의 IT 기록장] GitHub 사용하기 (GitHub란?, GitHub 사용하기, GitHub 가입하고 토큰 만들기, GitHub Repository 생성 방법, GitHub Repository 삭제방법, 원격 저장소 사용하기, Push와 Pull, 원격의 브랜치 다루기, SoruceTree로 진행해보기)

[문과 코린이의 IT 기록장] GitHub 사용하기 (GitHub란?, GitHub 사용하기, GitHub 가입하고 토큰 만들기, GitHub Repository 생성 방법, GitHub Repository 삭제방법, 원격 저장소 사용하기, Push와 Pull, 원격의 브랜치 다루기, SoruceTree로 진행해보기)

 


[ 참고영상 ]

 

제대로 파는 Git & GitHub - by 얄코 - 인프런 | 강의

코알못도 따라올 수 있는 친절하고 쉬운 강좌! 현업 개발자는 Git 박사로 들어주는 끝판왕 강좌!, - 강의 소개 | 인프런...

www.inflearn.com

2022.03.29 - [문과 코린이의, [Git] 기록] - [문과 코린이의 IT 기록장] Git Intro (Git을 배워야하는 이유, Git 설치 (윈도우), SourceTree, VS Code 설치, CLI vs GUI 무엇을 사용해야 하는가?, Git 최초설정, Git을 통한, 프로젝트 생성 & Git 관리 시작, Sou..

 

[문과 코린이의 IT 기록장] Git Intro (Git을 배워야하는 이유, Git 설치 (윈도우), SourceTree, VS Code 설치

[문과 코린이의 IT 기록장] Git Intro (Git을 배워야하는 이유,  Git 설치 (윈도우), SourceTree, VS Code 설치, CLI vs GUI 무엇을 사용해야 하는가?, Git 최초설정, Git을 통한, 프..

vansoft1215.tistory.com

2022.03.30 - [문과 코린이의, [Git] 기록] - [문과 코린이의 IT 기록장] Git 시간 다루기 (프로젝트의 변경사항들을 버전에 담기, commit하기, 변경사항들을 만들고 Commit하기, Git에서 과거 버전으로 돌아가는 방식, SourceTree로 진행해보기)

 

[문과 코린이의 IT 기록장] Git 시간 다루기 (프로젝트의 변경사항들을 버전에 담기, commit하기, 변

[문과 코린이의 IT 기록장] Git 시간 다루기 (프로젝트의 변경사항들을 버전에 담기,  commit하기, 변경사항들을 만들고 Commit하기, Git에서 과거 버전으로 돌아가는 방식, SourceTree로 .

vansoft1215.tistory.com

2022.03.31 - [문과 코린이의, [Git] 기록] - [문과 코린이의 IT 기록장] Git Branch 다루기 (Branch란?, Branch 생성 / 이동 / 삭제하기, 서로 다른 브랜치를 합치는 두 방식, 브랜치 간 충돌 해결하기, SourceTree로 진행해보기)

 

[문과 코린이의 IT 기록장] Git Branch 다루기 (Branch란?, Branch 생성 / 이동 / 삭제하기, 서로 다른 브랜

[문과 코린이의 IT 기록장] Git Branch 다루기 (Branch란?, Branch 생성 / 이동 / 삭제하기, 서로 다른 브랜치를 합치는 두 방식, 브랜치 간 충돌 해결하기, SourceTree로 진행해보기)..

vansoft1215.tistory.com


1. GitHub란?

- GitHub는 Git으로. 모든 프로젝트들을 온라인 공간에 공유함으로 인해, 팀원들과 협업하기 위해 사용하는 것이다.

 * GitHub 외, GitLab Bitbucket 등의 동종 서비스가 존재하며, 종종 자체 서버를 이용하는 곳도 존재한다.

 * 그러나 GitHub가 가장 대표적으로 유명하다.

 

- 왜 일반 클라우드 서비스로 이용하지 않고, GitHub를 사용하는가?

: 일반 클라우드는 하나의 부분에 대해 많은 구성원들이 동시에 작업을 하게 된다면, 업로드 시마다 파일이 덮어쓰기 되어, 동시에 작업하는 부분에 있어 문제가 발생함.

: GitHub와 같은 온라인 git 저장소는, 모든 업로드 및 다운로드를 commit단위로 주고받음. 따라서, 많은 구성원들이 같은 부분에 대해 동시에 작업을 하더라도, 매번 commit하는 과정에서 충돌이 나지 않고, 문제가 발생하지 않도록 돕는다. 


2. GitHub 사용하기

- GitHub는 Git으로 관리되는 프로젝트의 원격 저장소이다.

- GitHub는 오픈소스의 성지라고도 불린다.

: 전 세계에서 굉장히 많은 오픈소스 프로젝트들이 이 GitHub에서 공유되고 있기 때문

: 따라서, 우리도 만약 무언가를 만들 때, 그것을 누구나 볼 수 있고 참여 가능하게 하는 오픈소스를 개방할 수 있음

 * git, vs code와 같은 프로젝트 또한 오픈소스의 형태로  존재함

66397번의 commit이 존재한 것.

 


3. GitHub 가입하고 토큰 만들기

1) Sign Up으로 가입 후 로그인

2) Personal access token 만들기

- github 사이트에 로그인하는 id가 아닌, 프로젝트를 이곳에 연동하기 위한 새로운 비밀번호를 따로 만들며, 이를 내 컴퓨터에 설정을 하는 과정 진행.

 

a. 우측 상단에서 settings 클릭

 

a. 우측 상단에서 Settings 클릭

b. 좌측 메뉴에 Developer Settings 클릭

b. 좌측 메뉴에 Developer settings 클릭

c. Personal access tokens -> Generate new token 선택

c. Personal access tokens -> Generate new token 선택

d. 권한 설정

d. 권한 설정

e. 비밀번호 복사해서 안전한 곳에 보관해두기

e. 비밀번호 복사해서 안전한 곳에 보관해두기

 

3) 토큰 컴퓨터에 저장하기 (윈도우)

a. Windows 자격 증명 관리자

b. Windows 자격 증명 선택

c. git:https://github.com 자격정보 생성

d. 사용자명과 토큰 붙여넣기


4. GitHub Repository 생성 방법

1) 우측 상단의 (+)에서 New repository 클릭


2) Repository name작성, Public & Private 설정

- public : 모두에게 보일 수 있는 프로젝트이다. (그러나 내용을 수정할 수 있도록 하는 것은 아님) ex. 오픈소스 프로젝트

- pbulic : 협업할 팀원(허용된 인원)들만 보고 싶을 경우 사용한다.


3) GitHub Repository 생성 완료


4) 이 Repository를 공유할 사람 선정

a. 해당 Repository 클릭

b. Settings - Collaborators 클릭

c. Manage access에서 협업할 팀원 추가 (Add People)


5. GitHub Repository 삭제방법

a. 해당 Repository 클릭

b. Settings 클릭 후 제일 하단으로 내려오기 

c. Danger Zone에서 Delete this repository 클릭하기.

d. 제거할 레포지토리명 및 계정 패스워드를 차례로 입력해주기


6. 원격 저장소 사용하기

1) GitHub Repository 생성 후 복붙 명령어

$git remote add origin (원격 저장소 주소) 
# 로컬의 Git 저장소에 원격 저장소로의 연결 추가
# 원격 저장소 이름에 흔히 origin 사용 (다른 것으로도 수정 가능)
$git branch -M main
# 기본 브랜치명을 main으로 (GitHub 권장)
$git push -u origin main 
# 로컬 저장소의 커밋 내역들 원격으로 push(업로드)

=> 이후 GitHub 해당 Repository 페이지 새로고침해 살펴보기 (파일들 내용 및 커밋 내역들)

 

[ 원격 목록 보는 방법 ]

$git remote

# cf1. 자세히 보기
$git remote -v

# cf2. 원격 지우기
git remote remove (origin 등 원격 이름)

2) GitHub에서 프로젝트 다운받기

$git clone (원격 저장소 주소(HTTP))
# Git Clone을 통해 Git 관리내역(.git) 포함 다운로드를 해야함.
# Download ZIP을 통해 다운로드 받으면 파일들만 다운받을 수 있으며, Git 관리내역은 다운되지 않는다.

7. Push와 Pull

* origin : 원격 (github - repository로 확인 가능) 

* local : 로컬 (내 컴퓨터 - sourcetree로 확인 가능)


1) 원격으로 커밋 밀어올리기 (push)

로컬 저장소에 커밋이 추가된 상태 (main이 위에 올라와있음)

원격 저장소(origin)의 메인 브랜치가, 로컬 저장소의 커밋 상태(main)보다 하나 뒤쳐져 있는 상태이다.

따라서 로컬 저장소에서의 변화를, 원격 저장소의 변화로 업데이트를 시켜줘야 하는데, 이 작업을 push라고 한다.

$git push

* git push-u origin main으로 대상 원격 브랜치가 지정되었기 때문에, git push만으로 원격 저장소에 업데이트 가능

* 즉 main branch에서 git push만 해주면, 원격 origin의 main으로 디폴트가 설정되어 있어, 업로드가 됨.

 

git push를 하고, github에서 새로고침(f5)을 하면, 해당 내용이 원격 저장소에 반영되어 나타난다.


2) 원격의 커밋 당겨오기 (pull)

github repository를 공유하는, 다른 팀 구성원이 push해서 올린 작업들이 존재 할 때, 이 내용들을 github로부터 내 컴퓨터의 프로젝트 폴더로 다운 받는 경우, pull을 사용하게 된다.

즉 github에서 발생한 변화를 가져와서 commit하는 것을 과정을 의미한다.

원격 저장소(origin main)에서 발생한 변화
원격 저장소의 변경사항이, 로컬 저장소에 적용되지 X 상태

$git pull
# git pull을 통해 github의 변경사항 가져오기
# 이 때, 로컬 저장소의 내용은 원격 저장소의 내용과 버전이 일치해야 함.

원격 저장소의 변경사항이, 로컬 저장소에 적용된 O 상태


3) pull 할 것이 있을 때 push를 하게 될 때 오류 발생

pull 할 것이 있을 때, push를 할 경우 오류 발생

* 현재 로컬 git 저장소는, 원격(github repository)저장소보다 뒤쳐져있으면(즉 pull 해야 할 요소가 있으면), push가 불가능하다. 따라서 원격 저장소에 push를 하기 위해서는, 로컬 저장소가 원격 저장소의 최신 내역에 맞춰져 있어야 한다.

 

cf. Edit Leopards manager : 로컬 저장소 commit / Edit Leopards coach : 원격 저장소 commit


(1) git pull --no rebase (merge 방식)

로컬 저장소의 main 브랜치와, 원격 저장소(github)의 main 브랜치 이 두개를 서로 다른 브랜치의 갈래로 보는 방식이다.

이 두 갈래가 나눠진 다음, 한 부분에서 합쳐지게 된다. (merge방식)

즉 로컬 저장소와 원격 저장소의 분기된 history를, 하나로 병합되는 방식을 의미한다.


(2) git pull-rebase 방식

$git pull --rebase
$git push

coach 다음에 manager를 붙여서 시간 선을 github와 맞춘 다음, git push를 하면 성공적으로 추가된다.

즉, 원격 저장소의 내용 다음에, 로컬 저장소의 내용을 이어붙이는 방식이다. 

 

* 이와 같이, 여러 사람들이 언제 어디서 작업하느냐와 상관없이, github공간에 공유하는 순서를 git이라는 시스템이 조율해주고 있다. 즉, 서로 잘못 덮어씌우지 않도록 정리를 해주는 역할을 한다.


4) 협업상 충돌 발생 해결하기

로컬 저장소의 커밋 내역과, 상대방이 한 원격 저장소의 커밋 내역이 충돌할 경우 해결방법 찾기

 

(1) git pull --no-rebase (merge방식)

$git pull --no-rebase
# 충돌 부분 중 선택하기

충돌 부분 선택

# 선택 후 커밋 하고 반영하기
$git add
$git commit
# :wq로 저장 후 나가기

충돌 해결


(2) git pull --rebase방식

$git push --rebase
# 충돌 부분 중 선택하기

충돌 부분 선택

$git add .
$git pull --continue
# wq!로 저장 후 나가기

충돌 해결

* rebase는 어떤 것을 선택하느냐에 따라서 추가되는 커밋의 수가 달라질 수 있음. (충돌시 main의 내용을 선택하면 커밋이 하나만 됨)

 

협업상황에서 rebase를 하는 것이 좋지 않다고 했던 것은, 로컬 저장소에서 작업한 후, 이미 공유된 내용들을 rebase하지 말라는 것이었다. 어떤 것을 협업한 후 pull로 받아야 할 상황에서 rebase하는 것은 문제가 발생하지 않는다.


cf. git push 오류 발생시 해결 방법 : error: pathspec '' did not match any file(s) known to git

# 해결방안
$git init
$git add .
$git commit -m "message" #am 아님

5) 로컬의 내역 강제 push해보기

원격 저장소의 내용이 잘못되어, 로컬 저장소에 있는 내용으로 강제로 맞춰줘야 하는 경우 강제 push로 해결할 수 있다.

그러나, 협업시에는 미리 합의하지 않았다면 이 방법은 사용하면 안된다. (다른 사람의 작업 내역들이 다 사라질 수 있기 때문)

로컬의 상태(main)이 원격의 상태(origin/main)보다 뒤쳐진 상태

$git push --force

강제로 로컬의 상태(main)에 원격의 상태(origin/main)을 맞춘 상태


8. 원격의 브랜치 다루기

1) 로컬 저장소에서 브랜치 만들어, 원격 저장소에 push 해보기

a. 로컬에서 새로운 from-local 브랜치를 만들기

$git branch from-local

b. git push를 하려 할 경우 오류 발생

이는 git이 로컬의 from-local 브랜치를 어디 원격에 표시해야 하는지(push해야 하는지)몰라서 발생하는 오류이다.

따라서, 이를 해결해주기 위해서는 원격에 직접 해당 브랜치를 만들어 세팅을 할 수 있도록, 명시해줘야 한다.

 

c. 원격의 브랜치 명시 및 기본 설정

# 원격의 브랜치 명시 및 기본설정
$git push --u origin from-local
# $git push --set-upstream origin from-local (이 방법으로도 원격 브랜치 설정 가능)

원격 저장소에 원격 브랜치 생성됨


cf. 브랜치 목록 살펴보는 방법

# [1]
$git branch

로컬 저장소 브랜치 만 살펴보는 방법

# [2]
$git branch --all
$git branch -a

 

로컬 저장소 + 원격 저장소 모든 브랜치 살펴보는 방법

 


2) 원격 저장소의 브랜치를 로컬 저장소로 받아오기

a. 원격 저장소 브랜치 만들기

박스에 생성할 브랜치명 작성 후, Create branch 선택

 

b. 로컬 저장소에서 원격 브랜치 변경사항 확인

이 상태에서 곧바로 원격의 브랜치는 나타나지 않는다.

# 원격의 대상들 업데이트 받음
$git fetch
# 로컬 저장소에서 원격 저장소 + 로컬 저장소 브랜치 내역들 확인
$git branch -a
# 이 명령어로 로컬 저장소에 같은 이름의 브랜치를 생성하여, 연결하고 switch한다.
$git switch -t origin/from-remote


* 로컬의 main은 원격의 origin/main과 연결되있음

* 로컬의 from-local은 원격의 origin/from-loacl과 연결되있음

* 로컬의 from-remote는 원격의 origin/from-remote와 연결되있음.

 

 

3) 원격의 브랜치 삭제

$git push 원격 이름 --delete 원격의 브랜치명
# ex. $git push origin --delete from-remote
# origin/from-remote일 경우

9. SoruceTree로 진행해보기

1) SourceTree에서 원격 추가하기

- GitHub에 새 Repository 만들고, SourceTree에서 origin2로 추가하는 방법 

SourceTree 저장소 -> 원격 저장소 추가
원격 이름 지정 + 원격 저장소(github repositroy url 복사해서 넣기)
github repository 주소 복사

2) SourceTree에서 Push 방법

SourceTree에서 Push
로컬 저장소의 main 내용들을, origin2 원격 저장소에 push하는 방법
로컬 저장소에서의 수정 사항을, SourceTree를 통해 원격 저장소로 push하는 방법 (수정사항 commit + 바뀐 내용 즉시 푸시)

 

3) SourceTree에서 Pull하는 방법

원격 저장소에서 바꾼 내용, SourceTree에서 패치를 통해 가져오기
Pull을 통해 가져오기

4) SourceTree에서 브랜치 다루기

SourceTree에서 새 원격 저장소 브랜치 만들기
해당 원격 저장소 브랜치 체크아웃(switch)하기
만든 원격 from-remote를 로컬로 가져와 이동

 


* 유의사항
- 아직 공부하고 있는 문과생 코린이가, 정리해서 남겨놓은 정리 및 필기노트입니다.
- 정확하지 않거나, 틀린 점이 있을 수 있으니, 유의해서 봐주시면 감사하겠습니다.
- 혹시 잘못된 점을 발견하셨다면, 댓글로 친절하게 남겨주시면 감사하겠습니다 :)

 

반응형