GIT 깃이란?
- 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템
- 한마디로 코드를 효율적으로 관리하기 위한 버전 관리 시스템!
날짜 별로 언제 어떤 파일이 어떻게 바뀌었는지 확인 가능
> 이렇게 특정 시점에 생성된 백업 복사본을 스냅샷(Snapshot)이라 하고
> 이 스냅샷을 만들어 주는 작업을 커밋(Commit)이라고 한다.
Git과 Github
- Git은 소스 코드 기록을 관리하고 추적할 수 있는 버전 관리 시스템
- Github는 git repository를 관리할 수 있는 클라우드 기반 서비스
git으로 관리하는 폴더를 github에서 사람들과 공유하는 것 > 개발자들의 SNS라고 할 수 있다.
Git Repository
- 저장소
- Remote repository : 원격 온라인 서버 상의 저장소, 여러 사람이 함께 공유 가능.
- Local repository : 내 컴퓨터 저장소, 개인 전용 저장소.
Git, Github 사용 방법
* 처음 시작할때
- git을 설치하면 먼저 사용자 이름과 이메일 주소를 설정, 설정에 기록된 이름과 메일을 앞으로 git commit 내역에 기록.
git config --global user.name "내 사용자 이름"
git config --global user.email "내 이메일 주소"
--global 옵션으로 설정하면 사용자 홈에 저장되므로 git을 설정할 때 처음에 딱 한 번만 입력하면 됨.
github의 사용자 이름이나 이메일을 변경한다면 이 명령어를 다시 입력해야 함.
여러 프로젝트를 진행 중이라 프로젝트마다 다른 이름과 메일을 사용하고 싶다면 --global 옵션을 빼고 명령 실행할 수 있다.
에디터
git에서 커밋 메세지를 기록할 때, 특히 merge commit 확인 메세지가 나올 때 텍스트 에디터가 열린다.
기본값으로 vi가 열리는데 vi에 익숙하지 않다면 nano로 변경하는 것이 좋다.
git config --global core.editer nano
SSH 등록
HTTPS로 git을 사용할 땐 토큰을 발행하여 접속해야 한다. (꼭 알아햐 하는 내용이지만 지금 적용하기엔 너무 번거롭기에 나중에 상세히!)
ssh (Secure shell) - 보안이 강화된 shell 접속을 뜻한다.
CLI 환경(터미널)에서 다른 PC에 접속하거나 요청할 때 사용, 비대칭키를 이용해 사용자를 인증한다.
- github에 ssh 공개키(비대칭키 중 하나)를 등록하는 방법
ssh 키는 비대칭키로 구성되며, 두 개의 키가 서로 대칭이 되지 않는 형태로 존재한다.
ssh-keygen
프롬프트에 위 명령어 입력 후 ssh키 페어 생성하기! 엔터 키 몇 번 입력하면 생성됨
~/.ssh/에 id_rsa와 id_rsa.pub 두 파일을 생성, 이 두 파일은 ssh키 페어라고 하며
이중 id_rsa.pub은 누구에게나 공개해도 되는 공개키(Public Key)라고 한다
id_rsa는 공개되면 안되고 나만 보관하고 있어야 하는 키로 개인키(Private Key)또는 비밀키(Secret Key)라고 한다
- 공개키(Public Key) 복사
cat ~/.ssh/id_rsa.pub
입력해서 나오는 키 전체 복사
github -> settings -> SSH Keys에서 New SSH key 클릭
Title 입력, 복사한 공개키 붙여넣고 Enter ->
Add SSH key 버튼 클릭 -> 승인하여 공개키 등록!
Github의 workflow
- fork
포크로 찍어서 가져온다 생각하면 됨.
원하는 대상의 repository에서 내 repository로 fork 해오면 내 remote repository에 복사가 된다
- clone
내 remote repository에 있는 걸 내 local repository로 가져온다, 복사해온다, 클론을 만든다
한마디로 github에 있는 파일을 내 컴퓨터로 복사해오는 것
git clone 레포지토리주소
- init
기존 디렉토리를 Git Repository로 변환 -> 내 컴퓨터에 있던 폴더를 git repository로 바꾸는 것
git init
- remote add origin
나의 remote repository에 연결
git remote add origin 레포지토리주소
- status
내 로컬로 복사해 온 디렉토리의 commit이 되기 전까지의 상태
터미널을 잘 읽어보자 어떤 파일을 add 할건지, restore할 건지
git status
- restore
commit 혹은 staged 되지 않은 변경 사항을 폐기
작성했던 코드들을 보니 이전에 저장했던(commit했던) 버전이 더 나아서 싹 다 밀어 버리고 다시 할 때
git restore 파일명
- add
Untracked files를 Staging area로 추가해서 gitd의 관리하에 둠
commit 하기 위해서는 add로 staging area로 옮겨줘야한다. add를 했을 때 터미널에 변화가 없다
git add 파일명 >> 하나의 파일만 추가
git add . >> 모든 파일을 한 번에 추가
- commit
수정 작업이 끝났을 때 변경 사항을 저장
git commit
git commit -m '남길 메세지'
커밋 메세지를 작성하기 위한 기준이 있음
https://chris.beams.io/posts/git-commit/
코드스테이츠의 이미지 자료
- reset
local 에서 commit한 내용을 취소할 때(remote에 push하진 않았을 때)
git reset HEAD^
추가로 hard와 soft 옵션도 있다 나중에 정리하기...
- push
local에서 변경, commit 된 사항을 remote repository에 업로드!
git push origin master
origin에는 pair가 들어갈 수도 있고 master에는 다른 branch이름이 들어갈 수 있지만
따로 설정을 안해놓았다면 origin master 일 것...
- pull
remote repository의 작업 내용 가져오기
git pull shortname branch
예) 페어의 리모트에서 가져올거면 git pull pair master
- log
현재까지 commit 된 내역들을 터미널 창에서 확인
git log
- Pull Request
내가 push 한 변경 사항에 대해서 다른 사람들에게 알리는 것
실제로 git을 이용할 때
1. 다른 사람, 다른 프로젝트를 가져와서(fork)해서 쓸 때
1) 해당 repository 클릭 > 오른쪽 상단의 fork 클릭
2) 그럼 내 repository로 가져와짐, local repository 로 가져오게 터미널에서 git clone 주소(한마디로 내 pc로 다운로드 받는 것)
git clone 주소복붙
3) local repository(내 pc)에서 작업 후 push > remote repository 로 보내짐
4) 반영해달라 할거면 pull requests
2. 나 혼자 만들어서 내 개인 repository로 올릴 때
1) 내 remote repository(git repository)로 옮길 로컬 폴더에서 git init
2) git remote add origin 레포지토리주소
3) 수정하고 git status 확인
4) commit 할 파일들 git add . 아니면 git add 파일명
5) git commit -m '메세지'
6) git push origin 브런치이름 (기본은 git push origin master)
3. 페어와 함께 작업할 때
1) git remote add pair 페어레포지토리주소
페어와 리모트 연결!
2) git remote -v
현재의 로컬 레포와 연결된 모든 리모트 레포 목록 확인!
3) git pull pair master
페어의 리모트 레포지토리에서 내용을 가져올 때
4) git push origin master
페어에게 내가 작업한 파일을 넘길 때도 꼭 내 레포지토리로 push 해야됨!!!!!!!!!
같은 부분을 수정하면 충돌이 일어남 > 다음에 정리하기