본문 바로가기

5. Git | Github

4/28(금) IT K-DT(42일차) / 2. Github

 

2. Github

 

2-1. Github의 개요

 

GitHub는 분산 버전 관리 시스템인 Git을 사용하는 프로젝트를 위한 웹 기반 호스팅 서비스.

코드 호스팅, 코드 검토, 이슈 트래킹 등의 기능을 제공하며, 개발자들 간의 협업을 용이하게 함.

개인 또는 조직 단위로 코드 저장소(repository)를 생성하고, 이를 다른 개발자들과 공유할 수 있음.

저장소에는 프로젝트의 소스 코드뿐만 아니라 문서, 이미지, 라이선스 등의 파일도 저장할 수 있음.

또한, 코드 변경사항을 추적하고 관리하기 위한 이슈 트래킹 기능도 제공함.

다양한 프로그래밍 언어를 지원하며, 오픈소스 프로젝트와 비공개 프로젝트 모두를 호스팅할 수 있음.

또한, GitHub는 Git을 기반으로 하기 때문에 Git의 모든 기능을 지원하며,

Git의 커뮤니티와 생태계를 바탕으로 다양한 도구와 서비스를 제공함.

GitHub은 개발자들이 협업하고 소스 코드를 공유하는 데 중요한 역할을 하고 있으며, 

오픈소스 생태계의 핵심적인 요소 중 하나임.

또한, 많은 기업들이 GitHub을 이용하여 자사의 소프트웨어 개발 및 협업을 관리하고 있음.

 

Github 공식 홈페이지/다운로드

https://github.com/

 

GitHub: Let’s build from here

GitHub is where over 100 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and fea...

github.com

 

git으로 버전을 관리한 코드를 업로드 할 수 있는 클라우드 서비스.
단순한 저장뿐만이 아닌, 타인과 함께 코드를 공유하고 온라인으로 하나의 프로젝트를 개발할 수 있게 해줌.

 

2-2. Github 사용 방법

 

Github 홈페이지에서 회원가입 진행 후 계정을 생성.

main page에서 Create repository 버튼을 클릭하여 repository를 생성.

 

git remote add origin "GithubURL"

로컬 저장소에서의 Github 저장소 주소를 설정.

git push -u origin master

생성한 커밋(version)들을 해당 주소(origin)의 github로 전송(push).

 

아래와 같이 정상적으로 전송이 된 것을 확인할 수 있음.

 

 

특정 사람이 사용하는 Github의 파일에 대한 fork를 가져가는 과정.

name 수정 후 Create fork 클릭.

 

 

정상적으로 나에게 fork가 진행됨

 

이제 나에게 repository 탭에는 어제 생성한 test와 방금 fork로 복사해온 custom-fastapi 2개가 있게 됨.

 

 

타인과 함께 작업하고 싶은 경우,

본인의 repository 탭의 repository를 클릭하여 같이 작업하고 싶은 사람의 이메일을 입력.

 

2-3. Fork

 

Git Repository Fork
하나의 큰 상자(Container, Repository)를 다른 계정으로 복사.
Git에 있는 명령어가 아님.
다른 사람의 Github 계정 Repository에서 fork를 눌러 내 계정 Repository로 복사.

다른 사람과 협업하기
원하는 Repository에서 Settings를 클릭 → 좌측 탭의 Colaborates 클릭

Repository 삭제하기
원하는 Repository에서 Settings를 클릭 → General 클릭 → Danger Zone의 Delete this repository 클릭

 

2-4. Clone

 

Git Repository Clone
Repository를 local 시스템에 복제.
지금까지의 모든 Repository의 히스토리가 포함됨.

    git clone 'git주소' (폴더를 생성)
    git clone 'git주소' . (폴더를 생성하지 않음)

 

예) 'Git > Apple ' 폴더로 Clone을 하려는 경우

 

정상적으로 Clone이 진행됨.

Apple 내부에 'test' 폴더를 별도로 생성하여 그 내부에 clone을 진행함.

 

 

중간에 'test' 폴더를 만들지 않고 clone을 진행.


Clone과 Fork의 차이점
    Clone
    A Repository → clone → 내컴퓨터에 저장
    Fork
    A Repository → Fork → B Repository → Clone  → 내컴퓨터에 저장


커밋(commit): 변경 사항을 저장하고 코드의 버전 관리를 위한 작업을 수행하는 것
로컬 저장소에 변경사항을 저장하는 데 사용함
파일이 변경될 때 변경사항은 자동으로 저장되지 않음.
Git에게 새 커밋을 생성하여 변경사항을 저장하도록 지시해야 함.
git remote add origin '보내야할주소' // origin은 접속에 이용되는 임의의 명칭 (origin1, origin2 ... 으로 변경이 가능함)

생성한 커밋들을 github로 push(전송)
원격저장소에 업로드하여 다른 사용자와 커밋을 공유하는 사용
git push -u origin maaster

업스트림
원격저장소와 로컬브랜치가 추적하는 브랜치를 의미
기본적으로 origin/master 브랜치를 추적함

 

2-5. Branch

 

작업에 대한 '나뭇가지'
큰 줄기에 영향을 주지 않고, 가지에서만 작업을 할 수 있음.
Git의 저장소의 기록에서 특정 커밋에 대한 포인터.
각 브랜치는 자체적인 커밋 및 변경 세트를 가질 수 있음.
브랜치를 사용하여 저장소의 메인 분기에 영향을 미치지 않고 여러 기능이나 버그 수정을 동시에 수행할 수 있음.

 

새로운 Branch 만들기

 

test 폴더 內 apple이라는 새로운 Branch를 생성.

 

VS Code의 index.html의 내용을 작성

 

git add 후 commit 작성

 

 

push 진행

 

 

Github 페이지에서 정상적으로 branch가 추가된 것을 확인할 수 있음.

 

 

 

2개의 Branch를 병합하기 위해, pull request 클릭

 

 

상단 화살표의 구조에 따라 2개의 branch가 병합될 예정이라는 것을 의미

base: master ← compare: apple

 

 

내용을 작성 후 Create pull request 버튼 클릭

 

 

정상적으로 병합이 된 상황

보라색 테두리 안의 Delete branch를 클릭 시 병합이후 apple branch의 삭제가 가능함.

 

 

apple 브랜치는 delete 되었으나,

master 브랜치의 코드를 확인해보면 병합된 apple 브랜치에서 작업한 코드가 포함되어 있는 것을 확인할 수 있다.

 

 

2-6. Pull Request


당기기를 요청 (다른작업자가 Push를 했으니 해당 자료를 가져가도록)
PR은 저장소에 대한 변경 사항을 제안하고 다른 개발자와 협업하는 방법
일반적으로 SW 개발에서 코드 변경을 제안하고 검토하며 저장소의 브랜치를 병합하는데 사용

    PR 만들기
    새로운 브랜치를 만들고 코드를 수정
    원격 저장소에 해당 브랜치를 push

    PR 리뷰
    함께 작업하는 작업자가 해당 PR을 리뷰함
    문제가 될만한 부분이 없는지 체크

    PR 병합
    브랜치는 새로운 분기가 생기는 것이므로 PR 병합을 통해 다시 병합함.
    병합 후 더이상 필요없는 브랜치는 삭제할 수 있음.

    PR 닫기
    문제가 있거나, 중복된 경우, 더 이상 필요없는 PR은 닫을 수 있음.
    PR을 열어둔 상태에서 기존 브랜치에 커밋하면 PR에도 모두 반영됨.

브랜치 변경
    git checkout -b '브랜치명'

현재 브랜치는 master임. 다른 브랜치로 변경해볼 예정

 

2-7. gitignore

프로젝트에 원하지 않는 백업파일이나 로그파일, 보안상 Github에 올리고 싶지 않은 파일들을 제외시킬 수 있는 설정파일
ignore에 추가할 파일을 만들어주는 웹사이트.

https://www.toptal.com/developers/gitignore 

 

gitignore.io

Create useful .gitignore files for your project

www.toptal.com

 

 

node라고 입력 후 enter. // node와 관련한 modules, 위험한파일 ,필요없는파일들을 제외시켜줌

예) log가 포함된 것들을 ignor 하는 코드가 포함되어있음

 

아래의 전체 내용들을 복사

 

VS Code에서 .gitignore 파일 생성하여 위에서 복사한 내용을 붙여넣기함.

 

2-8. Github Desktop

 

Github를 Desktop에서 사용할 수 있는 방법

 

 

로그인 후 첫 화면

 

 

test 폴더로 현재 보유한 repository를 clone해오는 경우

 

 

실시간으로 change에 대한 확인이 가능해짐

 

 

change한 내용들에 대한 커밋을 진행해서 버전업함.

 

 

Commit to master 클릭 후 Push to origin을 클릭.

웹페이지에서 커밋된 내용의 확인이 가능.

 

 

예제

 

본인의 portfolio 사이트를 Github에 repository를 생성하여 코드를 업로드해보자.

 

 

 

cmd에 git add . 을 입력

 

git commit -m "트위터 클론코딩 초기버전 커밋" 입력

 

 

git remote add origin2에 해당  respository의 code 주소를 붙여서 입력.

 

git fetch origin2

 

 

 

→ git pull origin2 master

→ git pull --rebase origin2 master

 git push origin2 master 입력 시 오류 해결 가능

 

아래와 같이 정상적으로 진행됨.

 

 

VS code로 돌아와서 폴더와 파일을 새로 생성

project > server > controller > tweet.js

project > server > data> tweet.js

 

router 폴더의 내용을 참고로 하여 controller 폴더, data 폴더로 tweet.js를 이동시켜 MVC구조로 작업을 나눔.

 

1) router > tweet.js → controller > tweet.js

아래와 같이 router 폴더의 내용을 controller로 가져와서 수정

 

 

2) router > tweet.js → data> tweet.js

아래와 같이 router 폴더의 내용을 data로 가져와서 수정

 

 

3) router > tweet.js

router 폴더의 내용을 수정