[KT Aivle 3기 AI] 1일차. Git
1. 개요
KT Aivle School 3기 AI OT 이후 1일차
- 주제 : Git
- 강사 : 이고잉(생활코딩) 강사님
- 내용 : Git은 이전부터 사용은 해왔지만, 제대로 배워서 알고 사용한 것은 아니었기에 좋은 강의를 통해 기초를 다질 수 있었다. 강의는 VS Code를 활용하여 GUI 형태로 Git을 사용하는 방법을 알려주셨고, Git의 버전이 등록되는 이론적인 부분을 설명해주셨기 때문에 기존에 알고 있던 지식과 연관하여 이해할 수 있었다.
2. Git
- Git은 DropBox와 같이 데이터를 보관 및 관리를 해주는 분산형 버전 관리 시스템이다.
- 앞으로는 버전관리가 중요하다고 함.
- 개발자로서 Domain Knowledge, 코딩 능력, 협업 능력이 중요함.
- 이 중, 협업 능력이 제일 가성비가 좋음.
- 협업의 중추가 바로 git이다!
Git에 대하여 생각해야할 3가지
- 버전
- 백업
- 협업
- 위 3가지를 구현하는 방법을 중점적으로 익히기?
3. Github.com 실습
- github.com은 파일의 내용과 버전을 보관한다.
- 깃은 버전 간 차이를 비교할 수 있다.
- 깃은 각 버전이 만들어진 스냅샷을 가지고 있다.
Step-1) Repository 만들기
github link에서 회원가입 후 New
버튼을 클릭
다음 화면에서 Repository Name
을 입력하고 (본인 계정의 Repository 이름이 중복되면 안됨) Public, Private 여부를 선택 후 Create repository
클릭
Step-2) 파일 생성
creating a new file
을 클릭하고 아무런 내용으로 파일을 하나 만들어 보자. 파일 이름과 내용 작성 후, 아래에서 작업을 한 내용을 입력하고 Commit new file
클릭
Step-3) 파일 수정
파일 경로로 들어가서 Edit this file
아이콘을 클릭하면 수정할 수 있다.
Step-4) 버전 확인
Repository에서 우측 상단의 {nums} commits
를 클릭하여 버전을 확인할 수 있다. 해당 버전을 누르면 버전의 스냅샷을 확인할 수 있다.
4. Git 실습
- VS Code에서의 실습 방법
Step-1) VS Code 설치 후 열기
VS Code 다운에서 VS Code 다운받고 열기. (Git도 설치해야 하는 걸로 아는데.. 나는 이미 설치가 되어있던 건지 일단 뒤에 진행됐음.)
Step-2) Repository 복제
Github Repository에 가서 SSH 링크를 복사.
Explorer를 열면 나오는 Clone Repository
클릭 (어떠한 폴더로 VS Code가 열리면 안보일 수 있는데, 이때는 상단탭의 File - New Window 하면 됨). 상단에 복사한 링크 붙여넣고, 원하는 폴더 선택하여 Clone.
이 때, SSH 인증키 발급과 github 설정이 되어있지 않으면 Clone이 되지 않음.
Step-2-1) SSH 인증키 발급
VS Code에서 Ctrl + `
누르면 TERMINAL이 뜸. Git Bash를 클릭하고 $ ssh-keygen
을 입력.
엔터 신공 하면 /c/Users/User/.ssh/
에 id_rsa
와 id_rsa.pub
가 생성됨. id_rsa는 비공개키, id_rsa.pub는 공개키로 생각하면 됨. id_rsa.pub는 아무나 봐도 괜찮은 정보, id_rsa는 나만 알아야하는 정보
$ cat /c/Users/User/.ssh/id_rsa.pub
를 통해 내용을 확인하고 복사.
Step-2-2) SSH 인증키 등록
Repository의 Setting 말고, 계정의 Settings로 이동.
Access 카테고리의 SSH and GPG keys
를 클릭.
상단의 New SSH key
를 클릭하고 Title은 아무렇게나(ex: 집 컴퓨터 등)하고 아래에 복사한 id_rsa.pub
내용을 그대로 붙여넣고 Add SSH key
클릭.
Step-2-3) git config
아무런 설정이 없다면 또 안될텐데,
$ git config --global user.name '{이름}'
$ git config --global user.email '{이메일}'
해당 명령어를 통해 git config 설정을 해줘야함.
Step-3) Git Graph 설치
VS Code의 Extensions 탭에서 Git Graph
검색 후 설치. Git 버전관리를 GUI로 수월하게 해 줌. 좌측 하단의 Git Graph
를 클릭하여 창을 띄울 수 있다.
Step-4) Commit, push, pull, fetch
해당 기능은 VS Code의 Source Control
탭에서 가능. 변경된 사항이 있으면 Changes로 들어가고, +
버튼(Stage Changes)을 통해 Stage Area
로 파일을 업로드한다(git add). 위에 Commit 내용을 입력하고 Commit
클릭(git commit). 위의 점 3개를 클릭, Push클릭(git push).
기타
수업 내용이 GUI로 알려주신거라 실행 내용을 사진으로 정리하기가 힘들어(시간이 너무 많이 걸려요..) 얻은 지식을 글로 정리해보려 한다.
사실 뒷 부분이 진짜 중요한 내용이었긴 한데.. 지금 당장은 습득을 했고, 주말이나 다음에 정리할 기회가 있으면 추가 정리하도록 하겠다.
- Stage Area
4)에서 작성한 것 처럼, 버전을 업데이트하는데에 있어 방식을 알게 되었음. 기존에
1
2
3
$ git add .
$ git commit -m "{커밋메시지}"
$ git push
를 정확히 모르고 사용했었다.
우리가 작업하고 있는 폴더를 Working Directory
라고 하고, 이 작업을 $ git add
를 통해 Stage Area
로 파일을 올린다. 이후 $ git commit
을 통해 Stage Area
에서 Repository
로 전송하고, $ git push
를 통해 최종 업로드를 진행한다.
- 버전관리
Git은 Head, Main(Master)가 존재함.
Head
는 Working Directory가 어떤 버전에서 유래했는지를 가리킨다.Main(Master)
는 마지막으로 작업한 버전이 누구인지를 가리킨다.
평소에는 Head가 Main을 가리키고 있고, 버전 업데이트(commit)시에 Head가 가리키는 부분이 업데이트 되는데 Head는 Main을 가리키고 있으므로 Main이 업데이트 됨 (ex: 1-commit 에서 2-commit으로 업데이트시, head->main->1-commit 에서 head->main->2-commit).
- 과거 버전으로 이동
명령어는 모르겠으나.. git graph에서는 우클릭 후 Checkout. Checkout은 head를 옮긴다.
다시 최신 버전으로 이동은 Main에다가 Checkout.
- Git Graph 해석
- Head 찾기
- Head가 Main을 가리키는지, Commit을 가리키는지 확인
- Local의 버전과 Repository의 버전이 같은 버전을 가리키는지 확인
- Branch
Git Graph에서 우클릭 후 Create Branch...
하면 생성됨.
main이 다른 branch를 합칠 땐, head가 main을 가리킨 상태에서 해당 branch 우클릭 후 merge into current branch
하면 merge됨.
branch merge 시, fast-forward 하면 새로운 branch 생성 x.
- 실험적인 작업을 할 때 :
- Head를 의도적으로 checkout, 작업 후 commit 하고 오류가 생기면 Checkout main
- 성공적으로 잘 되면 merge
- 다운로드 방법
- fetch
- fetch는 새로운 branch를 생성
- pull = fetch + merge
- git의 merge는 자동적으로 해주지만, conflict가 나는 경우에는 수정해줘야함.
- Local -> Remote Repository
VS Code에서 폴더열고, Initialize Repository -> remote -> Add Remote -> 아무 이름(일반적으론 origin)
- 기타
origin/main 은 remote tracking branch라고 불림