성장에 목마른 코린이

TIL - 9일차 220127 (git) 본문

Today I Learned

TIL - 9일차 220127 (git)

성장하는 코린이 2022. 1. 27. 21:38
728x90

오전 8:30 - 8:45 plan / 나의 하루 목표

Git이 나중에 취업한 이후 매우 중요한 만큼 꼼꼼하게 블로깅및 공부하기

 

오전 9:00 - 10:30 chapter / 버전 관리 시스템, Git 설치

버전 관리 시스템의 필요성

만약 여러 사람이 같은 파일로 동시에 작업하거나, 이전 상태로 다시 되돌려야 할 경우가 생긴다면 버전 관리를 통해 손쉽게 이전 상태로 돌아갈 수 있습니다.

버전 관리를 사용하는 이유

1. 파일이 변경되면 변경 이력을 저장할 수 있다.

2. 이전 버전으로 돌아갈 수 있다.

3. 어떤 변경 사항이 발생했는지 알아보기 쉽다.

4. 협업하기에 좋다.

5. 백업을 할 수 있다.

 

Git - 가장 강력하고 대중적인 버전 관리 시스템

Git 은 개발자의 코드를 효율적으로 관리하기 위해서 개발된 '분산형 버전 관리 시스템' 입니다.

하나하나 날짜별로 어떤 파일이 어떻게 바뀌었는지 확인이 가능합니다. 특정 시점에 생성된 백업 복사본을 commit이라는 기능을 통해 변경 사항에 대한 스냅샷이 만들어지고 이전 기록들에 대한 추적이 가능합니다.

어떤 부분이 어떻게 바뀌었는지 변경사항을 하이라이트로 한눈에 확인할 수 있습니다.

이렇게 소스 코드가 변경된 이력을 쉽게 확인할 수 있고 특정 시점에 저장된 버전과 비교하거나 특정 시점으로 돌아갈 수 있습니다.

 

Github - Git Repository를 관리할 수 있는 클라우드 기반 서비스 (개발자들의 SNS)

Git으로 관리하는 폴더에 대해서 Github를 통해 여러 사람들이 공유하고 접근 할 수 있습니다.

 

Git Repository - 저장소, 파일이나 폴더를 저장해두는 곳

Git Repository는 Remote Repository와 Local Repository 두 종류의 저장소를 제공합니다.

작업할 때는 Local Repository에서 할 수 있고 내가 작업한 코드를 공유하려면 Remote Repository에 업로드해 여러 사람이 함께 공유할 수 있습니다. 다른 사람이 Remote Repository에 올려놓은 소스 코드를 내 Local Repository로 가져 올 수 있습니다.

 

Fork - React(온라인상에 올라와 있는 오픈 소스) 원격 저장소를 내 원격 저장소로 가지고 오는 작업

React 프로젝트에 contribute를 하기위해서는 Fork를 해야합니다.

 

Clone - Remote Repository에 있는 코드를 내 컴퓨터로 가져오는 작업

Fork를 하고난뒤 코드를 수정하기위해 내 컴퓨터로 가져오기위해 Clone을 사용합니다.

 

Push - Local Repository에 기록해 놓은 commit를 Remote Repository로 업로드 하는 작업

내 컴퓨터에서 React 소스코드 변경 작업을 완료했으니 Remote Repository로 올려주는 작업을 Push를 통해 합니다.

 

Pull - Remote Repository에 변경 사항이 있을 때 Local Repository로 가져오는 작업

 

Ubuntu Git 설치 - 터미널을 열고 sudo apt install git 을 입력합니다. (git --version 을 통해 정상적으로 설치 되었는지 확인)

사용자 정보

$ git config --global user.name "나의 사용자 이름"
$ git config --global user.email "내 이메일 주소"
예시
$ git config --global user.name "L9628"
$ git config --global user.email "mhp4718@gmail.com"

--global 옵션으로 설정하면 git을 설정할 때 처음에 단 한 번만 입력해도 됩니다. 나중에 사용자 이름이나 이메일을 변경할 경우 명령어를 다시 입력해야 합니다.

 

에디터 - Git에서 commit 메세지를 기록할 때 기본 값으로 텍스트 에디터 vi가 열리는데, vi에 익숙하지 않다면 nano로 변경하는 것이 좋습니다

git config --global core.editor nano

SSH 키 생성 - Secure shell의 줄임말로 보안이 강화된 shell 접속을 의미합니다.

공개키(Public Key) 복사 - 화면에 출력된 키를 복사후 github 설정에 SSH and GPG Keys에 등록합니다.

테스트하기

이후 ls를 입력해 정상적으로 폴더가 생성되었다면 테스트 성공입니다.

 

오전 10:30 - 12:00 chapter / Git

Git의 세가지 영역 및 상태

Untracked area - Git이 관리하고 있지 않은 영역

Unstaged area - 기존에 Commit했던 파일을 수정하는 영역

  • Unmodified: 기존에 Commit했던 파일을 수정하지 않은 상태입니다.
  • Modified: 기존에 Commit했던 파일을 수정한 상태입니다.

Staging area - Commit 하기 전에 내용을 기록하는 장소

혼자 작업 - Git 버전 관리 기능 활용하기

1. Fork: Remote 에 있는 다른 Repository에서 부터 Fork를 해 Remote에 있는 내 Repository에 가지고 옵니다.

2. git clone <레파지토리 주소>: 그리고 이 코드를 수정하기위해 내 컴퓨터로 작업을 해야하는데 그 작업을 위해 clone을 합니다.

3. git status: commit을 하기위해 먼저 이 명령어를 통해 staging area와 untracked files 목록을 확인할 수 있습니다.

4. git restore <파일명>: 혹시 코드 작성 방식이 달라 새로 작업해야 할 때 처음 Clone 받았던 상태로 되돌릴 수 있습니다.

5. git add <파일명>: 내 local의 untracked file을 staging area로 추가할 수 있습니다. (git add . 모든파일 한번에 추가)

6. git commit -m '커밋 메세지': -m 옵션을 통해 커밋한 내용의 comment를 작성할 수 있습니다.

7. git reset HEAD^: 아직 Remote Repository에 올라가지 않은 commit이면 이 명령어로 최신의 커밋을 취소할 수 있습니다.

8. git push <origin> <branch>: Local 에서 변경, 커밋된 사항을 Remote Repository에 업로드

9. git log: 현재까지 commit된 내역들을 확인할 수 있습니다.

10. Pull Request: 내가 Push한 변경 사항에 대해서 다른 사람들에게 알리는 것

 

함께 작업 - Git 버전 관리 기능 활용하기

1. git init: 기존 디렉토리를 Git Repository로 변환하거나 새로운 Repository를 초기화

2. remote add origin <Repository 주소>: Local Repository에 Remote Repository 연결

3. remote add pair <Repository 주소>: 페어의 Remote Repository에 연결

4. remote -v: 현재의 Local Repository와 연결된 모든 Remote Repository 목록 확인

5. git pull <shortname> <branch>: Remote Repository의 해당 branch 내용을 Local Repository로 가져오기

받아오는 내용은 같은 부분을 변경한 내용이 존재하지 않는다면 자동으로 병합이 됩니다.

충돌 해결하기 - 같은 부분을 변경한 내용이 존재해 자동으로 병합할 수 없는 경우

1. git status 명령어를 통해 어떤 파일이 충돌하고 있는지 확인할 수 있습니다.

2. 충돌이 발생한 파일을 열어서 하나하나 직접 확인 후 수정

3. 수정을 했다면 git commit -m명령어를 통해 commit 메세지를 남기기 (git commit 만 작성하면 자동으로 메세지 생성)

4. git push를 통해 Remote Repository로 업로드

오후 1:00 - 3:30 pair / Simple Git Workflow

오후 3:30 - 4:30 checkpoint / Git Command Checkpoint

오후 4:30 - 6:00 zoom / Sprint Review

오후 6:00 - 6:30 review / 일일 회고

오늘 페어시간에 굉장히 유익한 시간을 가져서 공부에 정말 많이 도움이 되었고 재밌었습니다!

오후 6:30 - 7:00 survey / Pair Review

'Today I Learned' 카테고리의 다른 글

TIL - 11일차 220207 (객체)  (0) 2022.02.07
TIL - 10일차 220128 (배열, 객체)  (0) 2022.01.28
TIL - 8일차 220126 (Linux)  (0) 2022.01.26
TIL - 7일차 220125 (HTML, CSS, JS)  (0) 2022.01.25
TIL - 6일차 220124 (CSS)  (0) 2022.01.24
Comments