[TIL] 코드스테이츠 SEB BE Day 6
💡 Today I Will Learn
- git
- git workflow - Pair
- git command - Quiz
✏️ Summary
버전관리 시스템
이전에 작성한 내용을 보존해주는 시스템으로 Git이 많이 쓰인다.
버전관리와 협업의 기본이고, 오픈소스 생태계에 기여할 수 있는 개발자가 될 수 있다.- 각 버전 별로 변경된 이력들을 저장
- 어떤 변경사항이 저장되었는지 코멘트
누가 어떤 파일을 추가, 수정, 삭제 했는지 확인이 가능 - Git으로 관리되는 파일은 Github, Gitlab, Bitbucket 등의 원격저장소로 저장되어 백업과 협업 가능
Git과 Github
Git
개발자 코드를 효율적으로 관리하기 위한 ‘분산형 버전관리시스템’으로 소스코드 기록을 관리하고 추적하며 날짜별로 어떤 파일이 어떻게 바뀌었는지 확인 가능
특정 시점의 백업본을 스냅샷이라 하고, 스냅샷을 만드는 작업이 commit이다. 어떤부분이 변경되었는 지 하이라이트로 확인이 가능하다.
Github
git으로 버전을 관리하는 폴더(git repository)를 클라우드 서비스에 공개하여 공유
개발자들의 SNS, code review 등으로 협업, 많은 오픈소스 프로젝트들에 기여 가Repository
- Remote Repository
작업한 코드를 공유 (클라우드 서비스) - Local Repository
코드를 작업 (로컬 환경)
- Remote Repository
Git 명령
명령 설명 init Git의 관리하에 들어가는 명령 fork 다른 오픈소스를 내 원격 저장소로 가져오는 작업 clone remote Repository를 local repository로 만드는 작업 remote 현재 프로젝트의 remote 저장소에 관한 설정
-v: 상태확인push 로컬에서 변경된 내용을 commit하여 원격에 저장하는 작업
git push [remote 별명] [적용할 현재 local branch]
pull 원격에 변경사항을 로컬로 가져오는 작업 Pull Request push를 하여 오픈소스 프로젝트에 내가 제안한 코드 변경사항을에 대한 반영 여부 요청 status Git이 관리하고 있는 파일 및 디렉터리 상태 확인 add Staging Area로 올리는 작업 restore add와 반대로 변경사항을 폐기 commit 변경사항을 저장하고 Local Repository에 올리는 작업 reset commit을 폐기하는 명령
–soft / –hard + [커밋명 ex) HEAD^]log 남겨진 commit 기록들을 확인 Git 환경설정과 SSH인증
Git 환경설정
# commit에 반영될 이름과 메일주소 git config --global user.name git config --global user.email
프로젝트마다 다른 이름과 메일을 사용하고자 한다면
--global
옵션을 제거하고 사용한다.git config --global core.editor vim
merge commit 확인메시지가 나올 때 등 텍스트 기본 에디터를 설정한다.
SSH 인증
Secure SHell로 보안이 강화된 shell 접속을 의미한다.
ssh key 생성
ssh-keygen # Enter 몇번으로 생성
ssh키는 비대칭키(private-public)이다.
홈디렉터리(~)에 ~/.ssh 폴더에 생성된 두 파일 id_rsa, id_rsa.pub을 키페어라 한다.- pub - 공개 가능한 public key
- id_rsa - 공개 해선 안되는 private key(secret key)
ssh public key 등록 공개키를 복사하여 github 계정 settings - SSH and GPG keys - New SSH key 에 붙여넣어 추가한다.
Git Repository 주소 사용 Git Repository 주소 사용시 반드시 SSH의 주소를 복사하여 사용 (https 사용 X)
추가로 Github CLI라는 인증 방식도 있으니 참고해보자.
📌 정리
기대했던 만큼 재밌었던 Pair Programming 이었다. Git 이론은 그다지 흥미롭지 않았지만 페어와 레포지토리를 공유하고 Conflict를 해결하여 merge 시키는 실습이 다가올 팀 프로젝트를 기대하게 한다.
👿 Problem
페어와 실습 프로그래밍을 진행하던 중 push/pull 명령에서 Password 인증을 요구하는 문제에 봉착했다. 아무리 올바른 값을 입력해도 실패만 했기에, 우선 학습했던 SSH로 전부 진행하고 추후에 문제점을 찾아보았다.
👼 Solution
윈도우에서 설치 진행 시 Git Credential Manager(GCM)을 통해 GUI창으로 첫 인증이 되고 토큰방식으로 저장된다고 한다. 페어는 Mac을 사용하고 있기에 패키지 설치만으로 GCM이 설치되지 않아 SSH로만 동작했던 것이다. 즉 GCM 설정을 따로 진행하거나, Github CLI를 통한 인증을 이용하는 것이 HTTPS로도 인증할 수 있는 방법이다.
🎯 Tomorrow
- Java Type, String
- Java Operator, I/O
- Pair Programming
Back to [TIL] 코드스테이츠 SEB BE Day 5