본문 바로가기
[스파르타코딩클럽]/Git & Github

Git & GitHub 혼자 공부하기

by 진진리 2023. 10. 15.
728x90

유튜브 강의 참고: https://www.youtube.com/watch?v=1I3hMwQU6GU 


사전 세팅

1. Git 설치

2. SourceTree 설치: Git을 GUI로 다룰 수 있도록 해줌

3. VS Code 설치: 코드 에디터

4. VS Code의 기본 터미널을 Git Bash로 설정

  • VS Code에서 Ctrl + Shift + P
  • Select Default Profile 검색하여 선택
  • Git Bash 선택  ---  Git Bash를 C 드라이브에 설치해야 함

 

Git 설정

터미널에서 사용자 이름과 이메일 설정

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

 

 

프로젝트 생성 & 프로젝트 관리 설정

VS Code 터미널에서 .git 폴더 생성 - Git 관리내역이 저장

git init

 

현재 폴더의 상태를 보여주는 명령어

git status

 

소스트리로 해보기

현존하는 저장소 추가: 소스트리에 폴더 드래그

.git 파일이 없는 경우 소스트리에 의해 새로 생긴 것을 볼 수 있음

 

 

Git에게 맡기지 않을 것들

  • 포함할 필요가 없을 때: 자동으로 생성되는 다운로드되는 파일들 (빌드 결과물, 라이브러리)
  • 포함하지 말아야 할 때: 보안상 민감한 정보를 담은 파일

.gitignore 파일을 사용해서 배제할 요소들을 지정 가능

 

  • .gitignore 형식

참조: https://git-scm.com/docs/gitignore

# 이렇게 #를 사용해서 주석

# 모든 file.c
file.c

# 최상위 폴더의 file.c
/file.c

# 모든 .c 확장자 파일
*.c

# .c 확장자지만 무시하지 않을 파일
!not_ignore_this.c

# logs란 이름의 파일 또는 폴더와 그 내용들
logs

# logs란 이름의 폴더와 그 내용들
logs/

# logs 폴더 바로 안의 debug.log와 .c 파일들
logs/debug.log
logs/*.c

# logs 폴더 바로 안, 또는 그 안의 다른 폴더(들) 안의 debug.log
logs/**/debug.log

프로젝트의 변경사항들을 버전에 담기

모든 파일 담기

git add .

버전 커밋

git commit

-> Vi 입력 모드로 진입

  • 입력 시작: i
  • 입력 종료: ESC
  • 저장 없이 종료: :q
  • 저장 없이 강제 종료: :q!  (입력한 것이 있을 때)
  • 저장하고 종료: :wq
  • 위로 스크롤: k
  • 아래로 스크롤: j

처음 커밋하는 경우 통상 FIRST COMMIT 입력

 

커밋 메시지까지 함께 작성

git commit -m "FIRST COMMIT"

 

add와 commit 한번에 (새로 추가된 파일이 없을 때만)

git commit -am "(메시지)"

 

아래 명령어와 소스트리로 확인

git log

commit 목록과 해시 확인 가능

소스트리 새로고침: F5

 

파일의 변경사항 확인

git status

git diff

끄기:q


특정 버전으로 돌아가기

  • reset: 원하는 시점으로 돌아간 뒤 이후 내역들을 지운다.
  • revert: 되돌리기 원하는 시점의 커밋을 거꾸로 실행한다.
    • 과거로 돌아간 내역도 기록할 필요가 있을 때
    • 과거의 특정 커밋만 취소해야 할 때
    • 협업 시 문제가 발생하므로 한 번 공유가 된 코드는 반드시 revert를 사용해야 함

 

reset 사용하기

git log 을 통해 되돌아갈 시점의 커밋 해시 복사

git reset --hard (돌아갈 커밋 해시)

 

reset하기 전 시점으로 복원하기

git reset --hard

 

 

revert 사용하기

git revert (되돌릴 커밋 해시)

커밋 해시가 없으면 마지막 커밋을 가리킴

+ revert로 인한 충돌 발생 시 알림 메시지가 뜸

 

revert하기 전 시점으로 돌아가기  -  reset 이용

git reset --hard (돌아갈 커밋 해시)

 

revert하고 커밋하지 않기

git revert --no-commit (되돌릴 커밋 해시)

원하는 다른 작업을 추가한 뒤 함께 커밋할 때

커밋하지 않은 내용을 취소할 때: git reset --hard

 

 

  • 소스트리로 진행해보기

revert: 커밋 되돌리기

reset: ...이 커밋으로 초기화, Hard 선택


브랜치 이용하기

여러 브랜치를 사용하는 이유

1. 프로젝트를 하나 이상의 모습으로 관리해야 할 때

예) 실배포용, 테스트서버용, 새로운 시도용

2. 여러 작업들이 각각 독립되어 진행될 때 -> 확정된 것을 메인 차원에 통합

예) 코드 개선, 긴급 수정, 신기능1, 신기능2

 

 

브랜치 생성하기

git branch (생성할 브랜치명)

 

브랜치 목록 확인

git branch

 

브랜치로 이동하기

git switch (이동할 브랜치명)

 

브랜치 생성과 동시에 이동하기

git switch -c (생성할 브랜치명)

 

브랜치 삭제하기

git branch -d (삭제할 브랜치명)

강제 삭제할 경우 -D

 

브랜치 이름 변경

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

 


각각의 브랜치에서 서로다른 작업하기

각각의 브랜치에서 커밋 작업을 한 후

git log: 현재 위치한 브랜치에서의 내역만 볼 수 있음

 

여러 브랜치의 내역 편리하게 보기

git log --all --decorate --oneline --graph


브랜치 합치기

  • merge: 두 브랜치를 한 커밋에 이어붙임
    • 브랜치 사용내역을 남길 필요가 있을 때
  • rebase: 브랜치를 다른 브랜치에 이어붙임
    • 한 줄로 깔끔히 정리된 내역을 유지할 때
    • 이미 팀원과 공유한 커밋들에 대해서는 사용하지 않는 것이 좋음

 

merge로 합치기

우선 중심이 되는 브랜치로 이동

git merge (합칠 브랜치)

 

merge는 reset으로 되돌리기 가능

merge도 하나의 커밋이기 때문

merge하기 전 해당 브랜치의 마지막 시점으로 초기화(소스트리)

 

 

rebase로 합치기

합칠 브랜치로 이동 - merge와 반대

git rebase main

main 브랜치는 합쳐진 브랜치보다 뒤쳐져 있는 상황

main 브랜치로 이동 후 합쳐진 브랜치의 시점으로 fast-forward

git merge (합쳐진 브랜치)

 

 

병합된 브랜치는 삭제

git branch -d (병합된 브랜치명)


브랜치 간 충돌

파일의 같은 위치에 다른 내용이 입력된 상황

충돌된 부분을 알려줌

 

merge 충돌 해결하기

당장 충돌 해결이 어려운 경우 merge 중단

git merge --abort

 

해결 가능한 경우 충돌 부분을 수정한 뒤 git add . , git commit으로 병합 완료

 

rebase 충돌 해결하기

당장 충돌 해결이 어려운 경우 merge 중단

git rebase --abort

 

해결 가능한 경우 충돌 부분을 수정한 뒤 git add . 후 아래 명령어로 계속

git rebase --continue

충돌이 모두 해결될 때까지 반복

 

main에서 git merge (충돌한 브랜치)로 마무리


소스트리로 브랜치 합치기

브랜치1을 main에 merge할 때:

  • main에 위치한 뒤 브랜치1을 우클릭하여 Merge . . . 선택

브랜치2를 main에 rebase할 때:

  • 브랜치2에 위치한 뒤 main 브랜치를 우클릭하여 . . . 재배치 클릭
  • main에 위치한 뒤 브랜치2를 우클릭하여 Merge . . . 선택

main으로 이동 후 브랜치1과 브랜치2 삭제


GitHub 사용하기

Personal access token 만들기

- 프로필 > Settings > Developter Settings > Personal access tokens > Generate new token

- 레포지토리 및 원하는 기능에 체크, 기간 설정 뒤 Generate token

- 토큰은 안전한 곳에 보관

 

토큰 컴퓨터에 저장하기

- Windows 자격 증명 관리자 > Windows 자격 증명

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

- 사용자명과 토큰 붙여넣기


로컬 저장소에 원격 저장소로의 연결 추가

(HTTPS 프로토콜 사용)

GitHub 레포지토리 생성 후

git remote add origin (원격 저장소 주소)
git branch -M main
git push -u origin main

 

*push에서 에러 발생: The requested URL returned error: 403

git remote set-url {remote git 주소 복사}

git remote set-url https://github.com/깃허브계정이름/레포이름

이를 입력 후 push하면 로그인 창이 뜬다.

로그인 후 push하니 정상 작동

 

원격 목록 보기

git remote

자세히 보기

git remote -v

 

원격 연결 지우기

git remote remove (origin 등 원격 이름)


GitHub 프로젝트 다운받기

git clone (원격 저장소 주소)

-> Git 관리내역 포함 다운로드

 

원격으로 커밋 올리기

git push

이미 git push -u origin main으로 대상 원격 브랜치가 지정되었기 때문에 가능

그 외의 경우: git push origin main

 

원격으로 커밋 당겨오기

git pull

 

원격의 변경사항이 있을 경우 pull한 후 push해야 함

push할 것이 있을 시 pull하는 두 가지 방법

1. git pull --no-rebase - merge 방식: 로컬과 원격을 합친 것을 커밋

2. git pull --rebase - rebase 방식: 원격을 먼저 붙인 후 로컬을 이어 붙임

--rebase는 충돌 시 어떤 것을 선택하느냐에 따라 커밋 내역이 달라짐

pull 상황에서의 rebase는 협업 시 사용 가능

 

로컬의 내역 강제 push해보기

git push --force

협업 시에는 되도록 사용하면 안됨


원격의 브랜치 다루기

로컬에서 브랜치 생성새로 만든 브랜치와 원격 연결

git push -u origin (새로 생성한 브랜치)

 

브랜치 목록 살펴보기

git branch - 로컬의 브랜치 목록

git branch --all - 원격 브랜치 목록 포함

 

원격의 브랜치를 받아오기

github에서 새 브랜치 생성: git branch -a 현재는 보이지 않음

원격의 변경사항 확인: git fetch

(다시 git branch -a 하면 확인 가능)

 

로컬에 같은 이름의 브랜치를 생성, 연결하고 switch

git switch -t origin/(새로 생성된 원격 브랜치)

이렇게 연결한 로컬 브랜치에서 push하면 해당 원격 브랜치에 반영됨

 

원격의 브랜치 삭제

git push origin -d (원격의 브랜치명)

 

 

 

 

 

 

 

'[스파르타코딩클럽] > Git & Github' 카테고리의 다른 글

2회차  (0) 2023.10.24
1회차  (0) 2023.10.04