[Git] 깃(Git)과 깃허브(Github)

김현수·2022년 12월 21일
0

팀원A,B,C 세명이서 하나의 프로젝트를 진행한다고 할때 각자 진행한 코드를 어떠한 방법으로 합칠수 있을까? 매번 작성한 코드들을 날마다 압축해서 이메일로 공유해서 변경된 부분들을 일일히 찾아서 프로젝트에 적용해야 할까?

이러한 때에 사용 가능한것이 깃과 깃허브이다.

버전관리도구! - 로컬저장소

위의 사진처럼 변경된 내용을 포함한 전체를 새로운 파일로 저장하는 것이 아니라
변경된 내용만 버전으로 저장
v1.0.0
v1.0.1
v1.0.2

작업 도중 문제가 발생했을 경우 파일들을 원하는순간으로 다시 돌아갈 수 있게 만든 도구

  1. https://git-scm.com/ 접속
  2. Downloads 클릭
  3. 본인 os에 맞게 macOS, Windows, Linux 클릭
  4. 설치 후 Git Bash 실행

  1. 깃 설치 후 최초 환경설정
    환경 설정은 한 컴퓨터에서 한 번만
    1) git config --global user.name "본인이름 영문명"
    2) git config --global user.email "깃허브 가입시 작성한 이메일"

깃허브 우측상단 프로필 아이콘 - Settings - Emails - 이메일 확인

--global 옵션은 로컬에서 사용하는 모든 프로젝트의 Git 커밋에 영문명, 이메일을 사용

저장소 디렉터리에서 --global 없이 git config를 사용하면 해당 디렉터리(저장소) 전용 설정을 추가하며 global 옵션보다 우선적용

전역 설정을 삭제
git config --global --unset user.name
git config --global --unset user.email

개별 저장소의 설정을 삭제
git config --unset user.name
git config --unset user.email

3) git config --list 후 작성한 user.name user.email이 적용되었는지 확인
커밋 시 사용자 이름과 이메일 주소를 사용


  1. Visual Studio Code에서 프로젝트를 오픈한 후 Terminal - New Terminal

1) git init
-> Initialized empty Git repository in [경로]
맨처음 프로젝트를 올릴때. 해당 프로젝트의 모든 수정내역이 저장되는 공간(.git)생성

2) git add .
커밋(깃에서 추적할 파일) 대상화를 위해 프로젝트에 포함된 파일들을 add . - 프로젝트에 있는 모든파일

3) git status
git add 명령어를 통해 어떤것들이 올라갈지 확인, 필수x

4) git commit -m "first commit"
commit을 생성하면서 메세지를 남김
보통 최초의 커밋은 first commit 또는 initial commit 등으로 지정하면 된다.

5) git remote add 원격저장소명(origin) https://github.com/깃허브 계정/깃허브 프로젝트명
로컬저장소와 원격저장소(github)와 연결

6) git remote -v
현재 git에 등록된 원격 저장소 리스트 확인, 필수x

7) git push 원격저장소명(origin) 브랜치명(master)
4번에서 commit한 파일들을 원격 저장소의 브랜치명에 업로드

8) push하면 아래의 깃허브 로그인 화면이 뜨는데 깃허브 아이디 입력

9) Autorize Visual-Studio-Code 클릭

10) 깃허브 본인 프로젝트 홈페이지 새로고침, 깃허브에 파일들이 추가

  1. 이후 프로젝트를 수정해서 깃허브 정보를 추가하고 싶을땐
    1) git add .
    2) git status (변경사항 확인, 필수x)
    3) git commit -m "메시지 작성"
    4) git push 원격저장소명(origin) 브랜치명(master)
    5) 깃허브 본인 프로젝트 홈페이지 새로고침, 깃허브에 파일들이 추가

깃허브

코드저장소! - 클라우드 저장소

깃에서 관리한 버전과 코드를 저장하는 저장소
다른사람과 소스코드 공유가능

개발자1(깃) <-> 서버(깃허브) <-> 개발자2

  1. https://github.com/ 접속
  2. 우측 상단의 Sign up (기존 아이디 있을경우 Sign in)
  3. 깃허브의 아이디가 될 email 및 개인정보 작성
  4. 좌측의 Create repository(저장소 생성) 클릭
  5. 내용작성
  • Repository name
    폴더 및 프로젝트명을 keyword(소문자) -(구분자)으로 표기한다.
    ex) purchase-rest-service

"https://(GitHub ID).github.io/(Repository name)/"

“https://(GitHub ID).github.io/” 주소로 바로 연결되게 하고 싶으면 Repository name에 (GitHub ID).github.io 로 생성을 하면 된다.

  • Public vs Private
    접근권한, Public - 공개 Private - 비공개, 특정 초대인원만 접근가능

  • Add a README file
    README 파일을 깃허브에 생성, 프로젝트 설명 및 기능을 작성
    리액트 프로젝트를 create-react-app을 통해서 만들면 README.md 파일 자동생성

  • Add .gitignore
    각종 설정이나 프로젝트에 포함된 API KEY값 등 외부에 보이지 말아야 할 내용들이 있을경우 설정
    리액트 프로젝트를 create-react-app을 통해서 만들면 .gitignore 파일 자동생성

  1. Create repository(저장소 생성) 클릭
  2. 본인 아이디/폴더명 으로 깃허브 생성완료
  3. 1) 깃 명령어를 이용해서 코드 push
    2) 깃허브 프로젝트 페이지의 uploading an existing file 클릭하여 파일업로드
  4. 변경, 추가점을 Commit changes에 작성

Git은 로컬에서 버전 관리 시스템을 운영하는 방식.
Github는 클라우드서버에서 로컬에 저장된 프로젝트를 공유하는 방식.

Git으로 로컬 저장소에 작업한 프로젝트 내용을 저장한 뒤, 해당 내용을 Github에 업로드.

  • 커밋(Commit) : 작업 내역을 로컬 저장소에 저장하는 과정
  • 푸쉬(Push) : Git에 Commit한 내용을 Github에 저장하는 작업
  • 풀(Pull) : Github에서 Git으로 최신버전 파일을 다운로드(동기화)하는 작업
    기존 작업 내용은 유지하면서, 최신 코드로 업데이트할때 사용
  • 클론(Clone) : Github의 데이터를 그대로 Git으로 복사
    작업중이던 내역 있을시 덮어쓰기, 프로젝트에 처음 투입 될 때 사용

Branch
새로운 기능추가 & 테스트 시

Git에서는 저장소가 처음 만들어지면 마스터브랜치(Master Branch; 하늘색)이 생성되고, 여기서 기본적인 버전 관리가 진행된다.
주가 되는 부분은 마스터 브랜치에서 작업하고 중간중간 새로운 기능추가나 테스트 시 브랜치를 추가해서 작업한다.
그리고 브랜치에서 작업한 기능이 괜찮으면 마스터 브랜치에 병합(merge)한다.

  • git branch 브랜치명(RB_1.0) 기준브랜치명(master)
    master 브랜치를 기준으로 RB_1.0이라는 브랜치를 생성

  • git checkout 브랜치명
    현재 브랜치에서 작성한 브랜치명으로 이동

  • git checkout master

  • git merge 브랜치명(feature/1)
    master 브랜치로 이동한 후, feature/1 브랜치를 master 브랜치로 병합


※ 파일 상태

1) Untracked 상태

  • '추적되지 않고 있는' 파일. 즉 파일을 생성한 후 한번도 add 하지 않은 상태.

2) Tracked 상태

  • 파일이 Git에 의해 변동사항이 추적되는 상태.

2.1) Staged 상태 : 파일 수정 후 staging area에 올라가 있는 상태
2.2) Unmodified 상태 : 현재 파일이 최신 커밋 파일과 비교하여 바뀐게 없는 상태
2.3) Modified 상태 : 현재 파일이 최신 커밋 파일과 비교하여 바뀐게 있는 상태

▶ Git의 4가지 영역
1) Working Directory (작업영역)

  • 실제 프로젝트 디렉토리
  • .git 이력과 관련 정보가 저장 된 .git을 제외한 모든 영역
  • 실제 코드의 추가, 수정, 삭제 작업이 이루어지는 영역

2) Repository (저장소)

  • 파일, 폴더를 변경 이력별로 저장해 두는 곳
  • .git 디렉토리내 존재하며 2가지로 나뉜다.
  • 2.1) Local Repository : 개인 PC에 파일이 저장되는 개인 저장소
  • 2.2) Remote Repository : 원격 저장소 전용 서버에서 관리되며, 여러 사람들과 같이 공유도 가능한 저장소

3) Index (Staging Area)

  • Working Directory에서 Repository로 정보 저장 전 준비 영역
  • 파일 상태를 기록, 스테이징 한다고 표현 한다.
  • .git/index 파일로 관리된다.
  • 3.1) git add : Working Directory 에서 Index 영역으로 정보가 저장됨.
  • 3.2) git commit : Index영역에서 Repository로 정보가 저장됨.

4) Stash

  • 위의 3가지 영역과 다른 별개의 임시 영역
  • 임시적으로 작업사항을 저장해두고 나중에 꺼내올 수 있다.

.gitignore 파일
git 버전관리에서 제외(Github에 업로드하지않을 파일 목록)할 파일 목록을 지정하는 파일
node_modules은 package.json 안에 명시되어 있기 때문에 굳이 필요없어서 기본적으로 .gitignore 파일에 추가되어있음

동영상파일과 같이 파일의 용량이 크고 굳이 깃허브에서 볼 필요 없는 파일들
보안상의 문제로 깃허브에 올라가서는 안되는 내용들 api key 등


실제 업무에서 깃과 깃허브가 사용되는 과정
코딩알려주는누나

깃허브 입문 개념
한시간만에 끝내는 깃허브(Github) 입문

깃플로우 vs 깃허브플로우
깃플로우

profile
웹개발자

0개의 댓글