# Git & Github

Doozuu·2022년 9월 19일
0

Github

목록 보기
1/8
post-thumbnail

1. Git의 필요성

Git은 VCS(version control system)의 일종이다.

  • 시간: 예전에 한 작업물을 수정 및 관리할 수 있음.
  • 차원: 프로젝트 내용을 여러 모드로 전환하고 이동할 수 있음.


2. 설치 및 세팅 (Mac)

버전 확인

git --version

최신 버전 설치

brew install git

추가적으로 Sourcetree, VS code, iTerm2 설치


3. CLI vs GUI

git 사용방식: CLI / GUI (혼용해서 사용. CLI 중심)

CLI(Command Line Interface) : 명령줄을 입력해서 사용하는 것

  • git에서 사용할 명령어를 쓸 때 주로 사용한다.
    ex) terminal

GUI(graphical User Interface) : 일반인 사용자들이 쓰기 편하도록 그래픽 요소를 활용한 인터페이스

  • 프로젝트 상태를 git상에서 자세히 살펴볼 때 사용한다.
  • git branch 구조를 볼 때 유용하다.
    ex) Sourcetree



4. Git 설정

1) git 최초 설정

Git 전역으로 사용자 이름과 이메일 주소 설정
(github 계정과는 별개)

git config --global user.name "본인 이름"
git config --global user.email "본인 이메일"

확인

git config --global user.name
git config --global user.email

기본 브랜치명 변경

git config --global init.defaultBranch main

2) 프로젝트 생성 & Git 관리 시작

폴더 생성하고 VS Code로 열기
VS Code 의 terminal 에서 아래 명령어 입력 (git 관리 내역)

git init

변경사항 확인

git status



5. Git에게 맡기지 않을 것들

  • 포함할 필요가 없을 때: 자동으로 생성 또는 다운로드되는 파일들
  • 포함하지 말아야 할 때: 보안상 민감한 정보를 담은 파일

👉🏻 .gitignore 파일을 사용해서 배제할 요소들을 지정할 수 있다.

방법: 폴더 안에 .gitignore 라는 파일을 만들고, 그 안에 맡기지 않을 파일의 이름을 적어둔다.
-> git status로 확인하면 숨겨져 있는것 확인할 수 있음.


6. 변경사항 추가, 저장

파일 하나 담기

git add 파일명

모든 파일 담기

git add .

커밋하기

git commit

커밋 메시지 함께 입력

git commit -m "메시지"

확인

git log

종료: :q

💡 add 와 commit을 한 번에

git commit -am "메시지"

⚠️ 새로 추가된(untracked) 파일이 없을 때 한정



7. 프로젝트를 과거로 되돌리기

Reset vs Revert

Reset: 이후 행적을 지우고 과거로 돌아감 (협업시 문제 발생 가능)

  • reset을 사용해서 과거로 돌아가기
    커밋 내역 확인: git log
    되돌아갈 시점의 커밋 해시 복사
    :q 로 빠져나가기
    git reset --hard 돌아갈 커밋 해시

Revert : 이후 행적의 반대 행적을 남기고 과거로 돌아감 (협업시 주로 사용)

  • revert를 사용해서 과거로 돌아가기
    위와 동일하게 커밋 내역을 확인하고 커밋 해시를 복사한다.
    git revert 되돌릴 커밋 해시

💡 커밋하지 않고 revert 하기
git revert --no-commit 커밋 해시


8. 여러 브랜치 만들기

Branch : 분기된 가지 (다른 차원)

  • 프로젝트를 여러 모습으로 관리해야 할 때
    ex) 실배포용, 테스트서버용, 새로운 시도용
  • 여러 작업들이 각각 독립되어 진행될 때
    ex) 신기능1, 신기능2,, -> 각각의 차원에서 작업한 뒤 메인 차원에 통합

1) 브랜치 생성 / 이동 / 삭제

브랜치 생성

git branch 브랜치명

브랜치 목록 확인

git branch

브랜치 이동

git switch 이동할 브랜치명

💡 브랜치 생성과 동시에 이동

git switch -c 새로운 브랜치명

브랜치 삭제

git branch -d 삭제할 브랜치명

브랜치 이름 바꾸기

git branch -m 기존 브랜치명 새 브랜치명



2) 브랜치를 합치는 두 가지 방법

Merge vs Rebase

Merge: 두 개의 브랜치를 합쳐서 새로운 커밋을 만듦.

  • 히스토리에 브랜치의 흔적이 남아있음.
  • 많은 브랜치가 사용될 경우, 프로젝트의 진행 내역을 파악하기가 어려워질 수 있음.
  • 브랜치의 사용 내역을 남겨둘 필요가 있을 경우 사용.

Rebase: 브랜치의 커밋을 대상 브랜치로 옮겨 붙임.

  • 히스토리가 깔끔하게 한 줄로 정리됨.
  • 팀원들 간에 공유된 커밋에 대해서는 사용하지 않는 것이 좋음.
  • 히스토리를 깔끔하게 하고 싶을 경우 사용.

merge 방법:

  1. main 브랜치로 이동
  2. merge 할 브랜치 입력
git merge 브랜치명
  1. 병합된 브랜치는 삭제
git branch -d 브랜치명

rebase 방법:

  1. merge 할 브랜치로 이동
  2. main 브랜치로 rebase
git rebase main
  1. main 브랜치로 이동 후 fast-forward (main 브랜치가 뒤쳐져 있는 상황)
git merge 브랜치명
  1. 병합된 브랜치 삭제
git branch -d 브랜치명



3) 충돌 해결하기

브랜치 간 충돌 : 파일의 같은 위치에 다른 내용이 입력된 상황

merge 해결 방법:

  1. 어떤 것을 택할지 선택하기
  2. 당장 충돌 해결이 어려울 경우 merge 중단하기
git merge --abort

rebase 해결 방법:

  1. 어떤 것을 택할지 선택하고,
git add .
  1. 아래 명령어로 계속하기
git rebase --continue
  1. 당장 충돌 해결이 어려울 경우 rebase 중단하기
git rebase --abort



9) Github

코드 공유 및 협업 서비스 (원격 저장소)

  • 각자 자유롭게 작업하고, 공유 공간(github)에 올릴 때는 최신 버전에 맞게 올려야 함
    👉🏻 협업시 작업이 겹칠 수 있는 문제 해결
  • 오픈소스의 성지

1) 프로젝트 올리기

깃허브에서 repository를 만든후, 두 번째 코드를 VS Code terminal에 복붙하면 프로젝트가 올라간다.

코드 해석:
1. 로컬의 git 저장소에 원격 저장소로의 연결 추가

git remote add origin (원격 저장소 주소)

2.기본 브랜치명을 main으로 설정

git branch -M main

3.로컬 저장소의 커밋 내역을 원격으로 push (업로드)

git push -u origin main



2) 프로젝트 다운받기

방법 1) Download ZIP (git 관리 내역 없기 때문에 협업시에는 x )
방법 2) 다운받고자 하는 폴더에 들어가서 우클릭 -> git Bash -> iterm 에서

git clone 복사한 주소

or
VS code에서 좌측 3번째 버튼 -> Clone Repository -> 클론할 repository 주소 입력



3) Push 와 Pull

Push : 원격으로 커밋 밀어올리기

git push

Pull : 원격의 커밋 당겨오기

git pull



4) 원격의 브랜치 로컬에 받아오기 & 삭제하기

원격의 변경사항 확인

git fetch

로컬에 브랜치를 생성하여 연결하고 switch

git switch -t origin/브랜치명

삭제하기

git push 원격 이름 --delete 원격의 브랜치명



출처: https://www.youtube.com/watch?v=1I3hMwQU6GU

profile
모든게 새롭고 재밌는 프론트엔드 새싹

0개의 댓글