코드를 효율적으로 관리하기 위해 개발된 분산형 버전 관리 시스템
특정 시점에 생성된 백업 복사본을 스냅샷이라고 하며
백업 복사본을 만드는 작업을 commit라고한다.
Git Repository를 관리할 수 있는 클라우드 기반 서비스
내가 작업하는 소스코드 폴더가 버전관리를 받게 하기 위해서는 내 폴더의 Git의 관리 아래에 두어야 한다.
이떄 Git으로 관리되는 폴더를 Git Repository라고 한다.
Git으로 관리되는 폴더
Remote Repository와 Local Repository의 두종류의 저장소를 제공을 하는데
다른사람이 Remote에 올린것을 나의 Local에 가져와 작업을 할수도 있다.
다른 사람의 Remote저장소에 있는 것을 나의 Remote저장소로 가져오는것을 말한다.
- 오픈 소스 파일에 contributor가 되는 것
Fork를 통해 가져온것을 나의 Remote저장소에서 나의 Lcoal저장소로 옮기는 과정
가져온 정보를 나의 Remote, 다른사람의 Remote에 commit하는 과정
- Push의 반대 과정을 pull이라고 한다.
이렇게 Push까지 완료를 한다면 GitHub에는 Pull request라는 기능이 있어서 내가 제안한 코드의 변경사항에 대해서 반영여부를 요청을 하게 된다.
git의 기본적인 환경설정 방법이다.
git config --global user.name "이름"
- 사용할 사용자 이름을 적는다.
git config --global user.email "이메일"
- 사용할 사용자의 이메일을 적는다.
CLI에서는 다른 PC에 접속하거나 요청할떄 비대칭키를 이용해 사용자를 인증한다.
ssh 공개키(비대칭키중 하나)를 이용하여 소통을 해야하기 떄문에
일단 ssh키를 생성해야 한다.
ssh : 보안이 강화된 shell을 의미한다.
ssh-keygen
터미널에 입력함으로써 키를 생성한다.
이떄 경로~/.ssh./에 파일 id_rsa, id_rsa.pub가 생성이 되는데 이 두개를 비대칭키 라고 하면
이떄 pub가 붙은 키를 공개키
pub가 없는키를 비공개키 라고 한다.
이후 공개키를 이용해 github에 등록한다.
setting에 가서 SSH and GPG keys에 들어가 저장하면 된다.
-> 이후 다른 Remote Repository에 가서 Clone이 되는지 확인해 보면 된다.
해당 ssh를 복사해
을 터미널에 입력하면 정상적으로 폴더가 생성이 된다.
clone과정후에 작업에 들어간 파일들을 git의 관리하에 있는 상태, 영역
- staged 된 파일이라고 말할수 있다.
- 반대로 staged안된 파일을 untracked, unstaged파일 이라고 한다.
staging area에 들어온 파일들만이 commit가능하며 commit을 하고 나면 나의 Remote Repository에 push해서 commit 기록을 Remote에도 남겨줄수가 잇다.
Git이 어떤순서, 어떻게 작동되는지에 대한 내용이다.
일단 Fork(저장소를 가져오는)과정이 끝나게 되면 나의 Remote에서 Local로 가져와야 하기 떄문에 Clone과정이 필요하다.
Clone과정
git clone <저장소 주소> 를 입력함으로써 이루어 진다.
이 과정이 이루어 진뒤 git status명령어를 통해서 staging area와 untracked files에 어떤것들이 있는지 확인을 할 수가 있다.
git restore 파일명
만약 작업한 코드를 싹다 삭제하고 새로 시작하고 싶다면 사용하는 명령어
- commit되지 않은 변경사항을 폐기한다.
이후 만족스럽게 작업이 되었다면 commit작업을 해주어야 한다.
commit 작업을 할때에는 파일이 Git의 관리하에 있어야하고 이 영역은 staging area이다.
git add 파일명, git add. : 특정 파일, 모든파일을 staging area로 추가한다.
터미널 창에 변화가 없다는게 포인트 이다.
이후 commit 하면 되는데
git commit -m '변경 완료' : 이런 명령어를 통해서 메시지를 남길수도 있다.
commit이 완료되면 다른 사람의 Remote저장소에 contribute해야 하기 떄문에 Pull Request를 날려줘야한다.
commit한 로그를 보고싶다면 git log를 활용
Pull Request를 날리기 위해서는 내 commit해서 Local에 있는 파일들을 나의 Remote에 올려줘야 하는데 이떄 사용하는것이 git push 이다.
git push 옵션 : 뒤에 따라오는 옵션은 상황에 따라 다양하게 사용된다.
이러한 Pull Request를 줄여서 PR이라고 한다.
====================================================================
fork -> clone하여 Work space에서 작업 -> add -> commit -> push -> Pull Request순으로 움직인다고 생각을 하면 될꺼같다.
git status를 보면 modified, unmodified staged등등 다양한 상태가 있다.
Unmodified : 기존에 Commit했던 파일을 수정하지 않은 상태
Modified : 기존에 Commit했던 파일을 수정한 상태
Staged : Commit이 가능한 상태(add하는 작업이 직전에 필요)
나의 Local 저장소는 github에서 나의 repository를 말한다.
내가 새로운 파일을 만들어서 협업하여 프로젝트를 진행한다고 가정을 하였다.
일단 새로운 파일을 만든뒤 이것을 Git으로 버전관리를 하기 위해서 git init을 활용한다.
git init : 디렉토리를 Git Repository로 변환 하거나 새로운 Repository를 초기화 하는데에 사용
이렇게 하면 나의 새로운 Local저장소가 생겨난 것이다 .
이후 Remote저장소와 연결을 해주어야 하는데 이떄 git remote add를 사용한다.
git remote add origin 'Repository주소' : Local저장소에 Remote저장소를 연결
터미널에 변화가 없다.
- 이 명령어를 사용하려면 github에 폴더의 repository가 있어야 한다.
이후 다른 사람과 협업을 진행할떄에는 git remote add pair를 활용
git remote add 상대방의 이름 '상대방의 Repository주소' : Local저장소에 Remote저장소를 연결
터미널에 변화가 없다.
잘 연결되었는지 확인을 하고자 한다면 git remote -v를 활용
git remote -v : 현재 Local과 모든 Remote를 확인
이후 같이 작업한 사람의 작업 내용을 받아와서 확인하고 싶다면
git pull : 상대방의 작업한 내용을 받아온다.
받아 오는 내용은 자동으로 merge가 이루어 진다.
이럴떄에는 git status 명령어를 통해서 어떤 파일이 충돌하고 있는지 확인할수가 있다.
확인한후에는 충돌이 일어난 부분을 하나하나 직접 확인 후 수정을 해야한다.. ㅠ
이후 수정이 완료되면 Remote에 업로드 하기 위해서 staging area에 파일을 추가한다.
====================================================================
간단하게 github를 통해서 코드스테이츠의 계산기를 frok해왔고 git으로 작업을 해보았다.
그렇게 되면 나의 Remote저장소에서 내 작업공간으로 가져온다.
저장소를 초기화 한다.
이렇게 되면 Staging area에 도착한 것이다.