학습목표
- Git의 환경설정
- Github과 Git의 관계
- Local Repository와 Remote Repository의 차이
- Github의 기능과 Git 명령어를 사용
- Git의 세 가지 영역 및 상태
배운 내용
- Git : 소스 코드 기록을 관리하고 추적할 수 있는분산형 버전 관리 시스템
- Git이 관리하는 디렉토리(폴더)에 어떤 문서를 만들면 Git으로 그 문서의 버전을 관리할 수 있습니다.
- Git은 여러분의 작업물을 온라인 원격 저장소에 백업할 수 있도록 백업 기능을 제공해줍니다.
- Git은 로컬에서 버전을 관리해주는 프로그램이며, Github은 Git을 클라우드 방식으로 구현한 서비스입니다.
- Github: Git Repository를 관리할 수 있는 클라우드 기반 서비스(개발자들의 SNS)
- 코드리뷰를 통한 협업
- 수많은 오픈소스 프로젝트 호스팅(자유롭게 기여가능)
- 기여(Contribution) : 기능을 추가하고 개선하는 작업
- 내 컴퓨터에서 Git으로 관리하는 프로젝트를 올려둘 수 있는 사이트
- Git으로 버전을 관리하는 폴더에 대해서 Github을 통해 여러 사람들이 공유하고 접근가능
- 버전관리: 각 버전 별로 변경된 이력들을 저장하는 작업 하나하나 추가되는 기능들의 변경 이력을 저장
- 오픈 소스(Open Source : 소스 코드가 공개된 소프트웨어)
- 스냅샷 : 특정 시점에 생성된 백업 복사본
- Git Repository(저장소) : Git으로 관리되는 폴더
- Remote Repository : 원격 온라인 서버상의 저장소 (공유가능)
- Local Repository : 내 컴퓨터의 개인 저장소
- Fork : 다른 원격 저장소를 내 원격 저장소로 가져오는 작업
- Clone : 내 원격 저장소에 있는 코드를 내 컴퓨터로 가지고 오는 작업
- 내컴퓨터에서 소스코드 변경 작업을 완료하고, 변경내용들을
commit
한뒤, 원격 저장소에 올려주기push
- push : 로컬 저장소에 기록해 놓은 commit을 원격 저장소로 업로드하는 작업
- push를 완료하면, Pull request 기능을 통해, 내가 제안한 코드 변경사항에 대한 반영여부 요청
- Pull Request(PR) : 내가 원격 저장소에 Push 한 변경사항에 대해 함께 작업하는 다른 사람들에게 알리는 것
- pull : 원격 저장소에서 변경사항이 있을때 로컬 저장소로 가져오는 작업
- staging area : 내 컴퓨터의 작업공간(Workspace)에서 작업에 들어간 파일들을 git의 관리하에 있는 상태로 올려 줄수있는데 이 영역을 Staging area라고 한다.( 커밋 하기전 내용을 기록하는 장소)
- staging area에 들어오지 않은 파일은 unstaged 혹은 untracked file이라고 말하며, staging area에 있는 파일들은 staged 된 파일 이라고 한다.
- staging area에 들어온 파일들은 commit이 가능
git clone <레파지토리 주소>
git status
내 로컬의 staging area, untracked fils 목록 확인 가능
git restore <파일명>
커밋 되지 않은 변경사항 폐기
git add 파일명 or .
로컬의 untracked file을 staging area로 추가 가능, .
은 모든 파일
git commit -m ‘커밋 메시지’
git reset HEAD^
: 현재 브랜치 마지막 커밋 1개 삭제
git push <origin> <branch>
: 원격저장소에 있는 origin의 master(main) 브랜치에 로컬의 변경사항 업로드
git log
: 현재까지 commit된 로그들을 확인
git init
: 기존 디렉토리를 Git Repository로 변환하거나 새로운 Repository를 초기화하는데 사용 (Git의 관리하에 들어가게 만들어주는 명령어)
git remote add origin <Repository 주소>
: Local Repository에 Remote Repository 연결
git remote add 페어이름 <Repository 주소>
: Local Repostiory에 페어 Remote Repository 연결
git remote -v
: 현재 Local Reopository와 연결된 모든 Remote Repository 목록 확인
git pull 페어명 <브랜치명>
: 페어의 Remote Repository에 있는 작업내용을 받아올 수있다.
- Untracked are 는 Git이 관리하고 있지 않은 영역, Tracke area에 들어온 파일들만 Git의 관리를 받을수 있다.
- Tracked area 내부 상태
- Unmodified : 기존에 Commit 했던 파일을 수정하지 않은상태
- Modified : 기존에 Commit했던 파일을 수정한 상태
- Staged : commit이 가능한 상태
커밋(Commit)
- 하나하나 스냅샷을 만들어 주는 작업 , 변경 사항에 대한 스냅샷을 만들고 이전의 기록들에 대한 추적이 가능
- 소스 코드가 변경된 이력을 쉽게 확인할 수 있고, 특정 시점에 저장된 버전과 비교하거나 특정 시점으로 되돌아갈 수도 있습니다.
Git 환경설정
사용자정보
- 터미널 화면에 Github에 등록된 사용자 이름과 이메일주소 기입
$ git config --global user.name "나의 사용자 이름"
$ git config --global user.email "내 이메일 주소"
**SSH등록**
- SSH(**(Secure Shell) : 보안이 강화된 shell 접속(**CLI 환경(터미널)에서 다른 PC에 접속하거나 요청할 때 사용하며, 비대칭키를 이용해 사용자를 인증**)**
**SSH 키 생성**
ssh-keygen
: ssh 키 페어(쌍)을 생성
~/.ssh./
에 두 파일(키 페어) id_rsa
와 id_rsa.pub
를 생성
id_rsa.pub
는 누구에게나 공개해도 되는 공개키(Public Key)
id_rsa
는 공개되면 안 되고 나만 보관하고 있어야 하는 키라고 하여 개인키(Private Key)
또는 비밀키(Secret Key)
- 공개키를 복사하여 gitub에 등록
**공개키(Public Key) 복사**
cat ~/.ssh/id_rsa.pub
으로 공개키 내용 출력후 복사후 Github에 등록
어려운 내용(에러)
문제
해결
- 복사할 영역 드래그후 마우스 우클릭 해서 copy, paste
- 복사 : Ctrl + Insert / 붙여넣기 : Shift + Insert