Achievement Goals
- Git의 환경설정을 할 수 있다.
- 버전 관리 시스템의 필요성을 이해할 수 있다.
- Github과 Git의 관계에 대해 이해할 수 있다.
- Repository에 대해 이해할 수 있다.
- Local Repository와 Remote Repository의 차이를 이해할 수 있다.
< Git 설치 - Ubuntu >
sudo apt install git 패키지 git 설치
git --version 설치 확인
< Git 환경설정 >
git config --global user.name "나의 사용자 이름"
git config --global user.email "내 이메일 주소"사용자 이름, 이메일 주소 설정.
(--global 옵션으로 설정하면, 사용자 홈에 저장되어 git을 설정할 때 처음에 단 한 번만 입력하면 됨)
git config --global core.editor nano nano에디터로 변경
< SSH 등록 >
최근 Github의 정책이 변경되어, HTTPS로 git을 사용할 때에는 토큰을 발행하여 접속해야 함.
반드시 알아야 하지만 이 과정에서는 ssh를 이용해 github와 소통하는 법을 다룬다고 함.
중요한거면 지금 해야하는거 아냐...?
ssh-keygen + enterx3 ssh키 생성
cat ~/.ssh/id_rsa.pub 공개키 복사
Github > 우측 상단 프로필 > Settings > SSH and GPG keys > New SSH key > SSH 코드 복사
git clone (주소)로 정상작동 확인
Git
< Intro >
- Github, GitLab, Bitbucket 등, 여러 가지 원격 저장소를 이용해서 백업과 협업이 가능함.
- Git = 개발자의 코드를 효율적으로 관리하기 위해서 개발된 '분산형 버전 관리 시스템'.
[ ⓒ 유아클레스 강의 ]
그림 처럼 파일이 어떻게 바뀌었는지 날짜별로 확인 가능.
- 특정 시점에 생성된 백업 복사본을 스냅샷이라고 함. 이렇게 스냅샷을 만들어 주는 작업을 commit 이라고 함.
- Pull requests > Files changed 에서 어떤 부분이 어떻게 바뀌었는지 한눈에 확인할 수 있음.
< Github >
- Git Repository를 관리할 수 있는 클라우드 기반 서비스(Git으로 버전 관리하는 폴더에 대해 Github를 통해 여러 사람들이 공유하고 접근 가능)
- 컴퓨터가 잘못되어 파일들을 모두 삭제한다면 백업본이 필요함, 이런 서비스를 대신해주는 서비스가 Github.
- 오픈 소스들도 있어서 누구나 자유롭게 해당 기능을 추가하고 개선할 수 있음.
< Git Repositiry >
- Remote Repositiry 와 Local Repositiry 두 종류의 저장소를 제공. 작업할 때는 Local Repositiry, 작업한 코드를 공유하려면 Remote Repositiry에 업로드해 여러 사람이 함께 공유 가능
- 다른 사람이 Remote Repositiry에 올려옿은 소스 코드를 내 Local Repositiry로 가지고 올 수 있음.
다른 사람의 Remote Repositiry에 소스코드가 올라와 있으면 내 원격 저장소로 가지고 오는 작업이 필요함. 그 과정을 Fork라고 함.
Fork를 하면 나의 Remote Repositiry에 코드를 옮겨온 상태임. 이 코드를 수정하기 위해서는 내 컴퓨터로 가져오는 작업 필요. 그 과정을 Clone이라고 함.
소스 코드 변경 작업을 완료후 변경된 내용을 commit을 통해 저장 후 Remote Repositiry에 반대로 올려주는 작업 필요. 그 과정을 Push라고 함. 이렇게 Push를 완료하면 Github에는 Pull request라는 기능이 있어, 내가 제안한 코드 변경사항에 대해 반영 여부를 요청할 수 있음.
Remote Repositiry에서 변경 사항을 Local Repositiry로 가져오는 반대 상황에는 Pull 작업도 가능.
< Github 명령어 >
git (명령어)
- Fork : 다른 저장소를 복사하여 자신의 계정으로 가져옴
- clone : 원격 저장소의 내용을 로컬 컴퓨터로 복제
- status : 현재 작업중인 로컬 저장소의 상태를 보여줌
- restore : 변경 사항을 이전 상태로 되돌림
- add : 변경 사항을 스테이징 영역에 추가
- commit : 스테이징 영역에 추가된 변경 사항을 로컬 저장소에 저장
- reset : 이전 커밋 또는 브랜치로 돌아감
- log : 커밋 기록을 보여줌
- pull : 원격 저장소의 변경 사항을 로컬 저장소로 가져옴
- push : 로컬 저장소의 변경 사항을 원격 저장소로 전송
- init : 새로운 로컬 저장소를 초기화
- remote add : 원격 저장소를 추가
- remote -v : 로컬 저장소에 연결된 원격 저장소의 목록과 URL을 보여줌
진심 너무 머리에 유입되는 정보가 많아서 뭐가 뭔지 처음에는 하나도 안보이다가 이제 좀 시간 지나고 몇번 성공을 하니까 조금은 알듯? 한 느낌.. 그래도 재미있어
중간중간 모르는거 물어보는 선생님들이 있는데 도망가는거 아니겠지? ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ