## 버전 관리 시스템 학습
### 목표
- Git의 환경설정을 할 수 있다.
- 버전 관리 시스템의 필요성을 이해할 수 있다.
- Github과 Git의 관계에 대해 이해할 수 있다.
- Repository에 대해 이해할 수 있다.
- Local Repository와 Remote Repository의 차이를 이해할 수 있다.
Git은 소스코드를 기록하고 추적할 수 있는 분산 버전 관리 시스템이다.
Git으로 관리되는 파일은 Github 등 여러 원격 저장소를 이용해서 협업과 백업을 할 수 있다.
특정 시점에 저장된 복사본을 만들어주는 작업을 commit이라고 한다. -> 수정 내용 추적할 때 용이
Github는 git repository를 관리할 수 있는 클라우드 기반 서비스를 말한다.
git repository에는 local repository, remote repository가 있다. 다른 사람의 repo를 remote에서 나의 remote로 가져오는 과정을 fork라고 한다. fork이후 remote에서 나의 local repo로 가져오는 과정을 clone이라고 한다.
작업 후 수정된 버전을 상기의 remote repo로 올리는 과정이 push이고, 다른 사람의 remote repo로 보내는 과정은 pull request라고 한다.
반대의 상황으로 remote repo에서 변경사항이 생겼다면, 본인의 local repo로 pull 할 수 있다.
### SSH 등록
SSH는 CLI 환경에서 다른 PC에 접속하거나 요청할 때 사용하며, 비대칭 키를 이용해 사용자를 인증한다.
SSH 키 생성
다음 명령어를 입력한다. ↓
ssh-keygen
이후 Enter를 몇 번하면 ssh 키 페어가 생긴다
해당 명령어로 경로 ~/.ssh./에 두 파일 id_rsa와 id_rsa.pub를 생성하는데 이 두 파일은 ssh 키 페어라고 하며 이중. pub가 붙은 파일은 누구에게나 공개 가능한 공개키 public key라고 하며, 다른 하나는 공개되면 안되고 나만 보관하고 있어야 하는 키라고 하여 개인키 private key 또는 비밀키 secret key라고 한다.
이제 생성된 공개키를 github에 등록하기로 한다.
공개키 복사
cat ~/.ssh/id_rsa.pub
다음 명령어를 입력한다↑
나오는 키를 복사 후 github ssh키 등록에 넣어준다.
정상 작동하는지 확인하기 위해
초록색 code 버튼을 누른 후 SSH를 복사한다.
$ git clone [ssh 복사]
입력하면 다음과 같이 나오게 된다.
## git 명령어
###목표
- 상황에 따라 Github의 기능과 Git 명령어를 사용할 수 있다.
- Fork
- clone
- status
- restore
- add
- commit
- reset
- log
- pull
- push
- init
- remote add
- remote -v
- Git의 세 가지 영역 및 상태를 이해할 수 있다. (Committed, modified, staged)
- Remote Repository를 페어와 공유하며 협업을 할 수 있다.
- 충돌이 발생했을 경우 해결할 수 있다.
우리가 직접 작업하는 공간을 -> work space라고하며 이 상태를 Unstage area라고 한다
작업 후 변경된 사항을 저장하고 git의 관리 영역으로 보낸다(commit하기 전 내용을 기억하는 장소) -> Staging area라고 한다
Staging area에서 commit하게 되면 -> Local repository로 이동
Local repository에서 push -> Remote repository로 이동하게 된다.
혼자 작업을 할 때 주로 쓰이는 명령어
git status: 내 로컬로 복사해 온 디렉터리의 commit이 되기 전까지의 상태를 표시
특정 파일을 수정한 후 commit을 하지 않은 상태로 git status를 한다면 다음과 같이 나온다.
여기서 [add]를 하게된다면 변경사항을 staging area로 추가하게 되고, [restore]하게 된다면 변경사항을 폐기하게 된다.
git restore: commit하지 않은 변경사항을 폐기한다.
[restore] 한 후↓
마지막 문단에 ok라는 텍스트를 작성했지만, commit하지 않고 restore을 통해서 변경사항을 폐기 후 원 상태로 복구되었다.
git add: 변경사항을 commit한다.
git add [파일명] -> 하나의 수정 파일만 올리는 경우
git add . -> 폴더 전체에서 변경 사항을 staging area로 보내는 경우
git commit -m "남길 메시지" : staging area에 있는 파일들을 commit 한다.(-m에 적은 메시지도 함께 이동)
커밋 메시지 관련 참고할 주소
https://chris.beams.io/posts/git-commit/
만약 방금 커밋한 내용을 취소하고 하고싶다면
git reset: Local에서 commit한 내용을 취소할 경우
git reset HEAD^ : 마지막으로 commit 내용을 취소함
git push: local에서 변경, commit된 사항을 remote repository에 업로드
$ git push <origin> <branch>
git log: 커밋된 기록들을 확인할 수 있다.
협업을 할 때 자주 쓰이는 명령어
git init: 기존 디렉토리(clone한게 아니라 직접 만든 디렉토리)를 git repository로 변환
git remote add origin <Repository 주소>: local repo를 remote repo와 연결
git remote add <상대방 repo명> <상대 repo 주소> : 상대방의 repo와 연결
git remote-v : 현재 연결된 remote repository 확인
git pull <shortname> <branch>: remote repo의 해당 branch 내용을 local repo로 가져옴
협업하는 사람과 동일한 코드 라인을 수정하고 가져올 경우 병합(merge)이 되지 않고 충돌(conflict)이 일어난다.
git status를 이용해서 어떤 부분에서 충돌이 발생했는지 확인할 수 있다.
'BEB' 카테고리의 다른 글
[Week3] 자료구조 기초 (0) | 2022.03.14 |
---|---|
[Week2-4] DOM (0) | 2022.03.11 |
[Week2-3] CSS lay out, selector (0) | 2022.03.10 |
[Week2-1] CLI 기초 (0) | 2022.03.07 |
[Week1] HTML, CSS기초 (0) | 2022.03.02 |