Git & Github

1. Git

Git이란 분산형 버전 관리 시스템 (Version Control System, VCS)의 한 종류로 소스코드를 효율적으로 다룰 수 있게 만들어주는 시스템이다. 쉽게말하자면 코드를 작성했던 과거와 현재를 원하는대로 넘나들며 조작할 수 있는 시스템이다.

VCS란?

파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 불러올 수 있는 시스템을 의미한다.
VCS를 사용하면 선택한 파일을 이전 상태로 되돌릴 수 있거나, 변경 사항을 비교할 수 있고, 변경한 사람 및 변경 시기를 추적할 수 있다. 또한, 파일을 잃어버리거나 잘못 고쳤을 때도 쉽게 복구할 수 있다.


2. Github

Github은 Git과 같은 것이 아니었다! 이 둘은 버전 관리라는
핵심 적인 기능을 이용할 수 있다는 공통점이 있으면서도 확연한 차이를 보인다.

Git과 Github의 차이

  1. Git
  • 로컬 버전 관리 시스템
    • 인터넷이 연결되지 않은 환경
    • 다른 개발자와의 작업 공유가 어려움
  1. GitHub
  • 웹 기반 버전 관리 시스템
  • 클라우드 서버에 소스 코드를 업로드하여 공유 가능
  • 분산 버전 제어, 액세스 제어, 소스 코드 관리, 버그 추적, 기능 요청 및 작업 관리 기능 제공

[실습]

1. 토큰 만들기

프로필 메뉴에서 settings
→ setting의 최하단 Developer settings
→ personal access token 중 Tokens (classic)
→ Generate now token (classic)을 선택하여 생성

토큰은 GitHub API에 접속할 수 있는 입구를 만든다고 생각하면 된다.


2. SourceTree 설치

나는 앞으로 VS Code를 사용해서 .yaml 파일과 .gitignore파일을 가지고 연습을 할 예정이다.
그런데 VS Code terminal에서 git을 이용하여 작업을 하다보면 내가 어떤 것을 작업했고 어디 부분에서 작업하고 있는지 시각화 되지 않아 충돌이나 오류를 일으킬 수도 있다.
그 시각화에 도움을 주는 것이 SourceTree라고 생각하면 된다.

VS Code에서 Git Terminal 사용 방법

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

Ctrl + shift + P 눌러 모든 명령 표시 후 Select Default Profile 입력한다.
거기서 Git Bash를 선택하면 Terminal을 들어갈때 기본적으로 Git Bash로 들어갈 수 있다.

  1. Terminal에서 Git Bash로 가기

VS Code의 새 터미널 (New TErminal)을 연 뒤 Terminal 창에서 '+'를 누르면 Git bash (MAC에서는 bash)가 있다.
누르면 Git bash Terminal로 창이 바뀐다.


3. 초기 Setting

  1. git init

  2. git config --list 입력하여
    user name, user email이 잘 들어갔는지 확인, init.defaultbranch=master 인가 확인
    (안 들어갔을 경우)
    1. git config --global user name (본인 github사용자이름) 입력
    2. git config --global user email (본인 github email) 입력
    3. git config --global init.defaultBranch main 입력
    그리고 다시 위에 list 코드를 이용하여 확인해본다.

  3. 새로만든 repository 주소록 복사후 연결하기 → git remote add origin (repository 주소)
    (이건 새로운 프로젝트에 참여하게 되었을 때 새로운 reepository에 연결하는 방법이다.)


4. Git 파일 추가하기

  1. git add . 입력 (. 은 모든 파일이란 뜻이다.)
  2. git status (파일 상태 확인)
  3. git commit -m "commit message" (올리기)
    (commit message는 주로 변경된 사항을 간결하게 알아보기 쉽도록 적는다.)
  4. git log (커밋 히스토리 확인)
  5. git diff (변경사항 내용 확인)

5. Git 이전 파일로 돌아가기

  1. reset → 보통 혼자 작업하는 경우 사용.
  • 추가 기능
    : hard, soft, mixed
  • hard : 커밋 기록마저 모두 삭제
  • soft : 커밋 기록은 남겨두고 파일 돌리기
  • mixed : 기록도 남겼지만 다시 add 명령하고 commit해야함.
  1. revert
    : 파일의 내용만 변경되지 파일 자체가 삭제되진 않음.
    revert commit 제목
  • revert 작업시 오류가 발생할 경우
  1. git reset : reverting 취소 (다른 파일 삭제 해도 되느지 안된는지 확인 필요☆)
  2. 오류 파일 삭제 후 , git add . → git revert --continue

6. branch 이용하기

  1. git branch (원하는 branch 이름)
  2. git switch (만든 branch 이름)
    → branch로 바뀌고 main의 여태까지 기록 가져옴. 이후 여기서 변경사항 생겨도 main에 영향을 주지 않음!
  • 삭제하기
    : git branch -D (삭제할 branch 이름)

  • branch명 변경하기
    : git branch -m (원래 이름) (바꾸고 싶은 이름)


7. merge와 rebase

  1. merge
    : branch의 이력을 유지한채 main branch에 합치는 기능이다. branch의 이력을 확인할 수 있어 변경 내용이나 주로 협업시 merge 방식을 사용한다.
  • Merge를 진행하기 위해서는 main branch로 이동 후 진행해야 합니다.
  • merge는 reset으로 되돌리기 가능하다.
  1. rebase
    : branch의 이력을 main branch와 연결지어 하나의 이력으로 만들어 줌. 기존 branch 이력이 사라지므로 깨끗한 이력을 관리하기에 용이하다. 단, 하나의 이력으로 만드는 과정에서 모든 커밋을 재정렬 되고 기존 로그의 해시값이 변경되어 충돌 등의 다양한 문제를 만들어 낼 수 있다.
  • Rebase는 merge와는 다르게 합치고 싶은 브랜치에서 Rebase를 진행 후 main에서 merge를 진행해야 합니다.
  • 이때, main의 head는 main에서 커밋된 마지막 위치에 있기 때문 merge를 이용해 합친 branch와 다시 한번 합치는 과정을 진행해야 합니다.

merge나 rebase를 하고 확인 메세지가 나오면 shift + ;를 입력한뒤 wq입력후 enter하면 원래 코드 칠 수 있는 창으로 나갈 수 있다.


8. 충돌 해결하기

main branch와 다른 branch들 각각에서 같은 부분에 대한 변경 내용이 다를경우 충돌이 발생하게 되는데 이를 해결하는 방법을 다룰 예정이다.

  1. merge conflict
    : 각 병합시 충돌되는 부분을 보여주고 main에 있는 (current) 값을 사용할 예정인지 다른 branch인 (recent)값을 사용할 예정인지 결정할 수 있게 해준다. 원하는 값으로 선택하고
    git add . → git commit -a로 하면 merging(main|MERGING)이 종료된다.

  2. rebase conflict
    : merge 충돌과 동일하게 진행하고 원하는 변경 이력을 선택한 후
    git add . → git rebase --continue 으로 진행. (또 충돌이 생긴다면 해당 과정 반복)
    그리고 main branch로 이동 후 해당 branch를 main branch로 merge하면 끝!


9. Github에 push

  1. git remote add origin (repository 주소)
  2. git remote, git remote -v로 등록 확인
  3. git push -u origin main로 github에 올리기

10. Git에서 프로젝트 생성

내가 프로젝트의 리더, 메인이라면 Git에서 새로운 프로젝트를 생성할 줄 알아야한다.

  1. Github에서 새로운 repository 생성
  2. 아무 파일 만들고 push
  3. github에서 멤버 초대
  4. create a new project 실행(board type )
  5. setting에서 private 으로 할지 public으로 할지 결정
  6. board에서 todo에 티켓 만들기 (+ add item) → 일 생길때마다

11. 프로젝트 내려받기

내가 프로젝트에 소속되어 있는 멤버라면 해당 프로젝트에 접근하여 작업하고 있는 파일들을 내려받고 공유 받아야한다.
프로젝트를 위해 내 컴퓨터에서 새로운 폴더를 생성하고 받는다면 <3. 초기 setting>을 참고하여 새 폴더를 git에 연결하고 아래 순서대로 작업해야한다.

  1. git clone 프로젝트 주소
  2. cd 프로젝트명
    (change directory)
  3. git fetch origin
  4. git switch 내 branch
  5. 작업 진행
  6. git add . → git status (확인) → git commit -m "작업 및 변경 내용"
  7. git push (github에 올리기)
  8. github에서 pull requests 로 올리기 (작업에 해당하는 티켓 #번호 & 내용 작성 필수)
  9. 간단하게 merge할 수도 있고 다른 작업 사항에 대해 review 남길 수 있음.
    (초록색 표시에서 보라색 표시_merged로 변경)

[추가 연습]

이 외에도 git 명령어나 작동 원리에 대해 알고 싶다면

이 사이트에서 게임형식으로 연습해보는 것도 좋다!

profile
백엔드 코린이😁

0개의 댓글