
안정적이고 효율적인 개발 가능, 많은 문제 방지
* 백업: 파일 손상 대비
* 협업: 변경 사항을 다른 사람과 공유
* 이력 추적: 언제 어떤 변경이 있었는지 파악
* 실험: 새로운 기능이나 아이디어 시도 후 이전으로 돌아갈 수 있음(branch)
* 버그 수정: 버그 발생 시점 파악 가능
버전 관리 및 협업 도구
* Git
* 분산 버전 관리 시스템(DVCS)
* 빠르고 안정적이며, 오프라인 작업도 가능
* GitHub
* Git을 기반으로 한 웹 기반 호스팅 서비스
* 소스 코드를 공유하고 협업할 수 있는 중앙 집중식 저장소를 제공
* 이슈 트래커, 코드 리뷰, 프로젝트 관리 도구 등 다양한 기능을 제공
Git과 VS Code 설치 방법
Git Bash 실행 방법
VS Code의 Git 관련 플러그인
* Git Bash 실행
* 커미터 등록
* 시스템 구조
* 프로젝트 예제 환경
* 프로젝트 폴더 생성 및 git 초기화
파일 추가
* VS Code 열기 code .
* package.json 프로젝트 메타 파일 생성
* ctrl + ` (backtick; 영문모드 ~ 키)로 터미널 열기
* git add package.json 으로 파일을 스테이징에 추가
* git status 로 상태 확인
기본 터미널 설정
* TERMINAL 패널의 우측 메뉴에서 + 옵션 확장
* Select Default Profile 선택
* 상단의 목록에서 Git Bash 선택
* 새로 터미널을 열면 Git Bash 로 열림
VS Code Git
첫 번째 커밋 (VS Code)
* UI대신 명령어로 같은 기능
* git commit -m "init"
* 스테이징에 있는 파일들만 해당
* git log --oneline 커밋 히스토리 확인
서버 코드 추가
클라이언트 코드 추가
세 번째 커밋
버전 관리 예외 목록
.gitignore
파일 삭제 및 복원
rm -rf .gitignore 파일 삭제. .git 폴더는 그대로 있음
* git reset --hard 명령으로 마지막 커밋 원상 복구
* npm i 로 라이브러리 추가; node_modules
* git config --global ...: 기본 정보 설정
* git init: 로컬 저장소 설정
* git add 파일명: 파일을 staging에 추가
* git commit -m "메시지": staging에 있는 파일을 로컬 저장소에 등록
* git reset --hard: 마지막 상태로 복원
* .gitignore 파일: 버전 관리 예외 목록
* GitHub, GitLab, BitBucket, Yona 등 서버(remote repository)를 통해서 코드를 공유
* 원격 저장소에 아이디와 이메일을 등록하고, 이메일 인증을 마치면 사용 가능
* 조직(Organization)을 만들어서 팀으로 공동 관리 가능
* 원격 저장소에 브랜치를 보낼 수 있음
* 원격 저장소의 최종 변경 사항을 로컬에 적용해야 보낼 수 있음
* 그렇지 않으면 non-fast-forward 예외
* --force 옵션으로 원격의 히스토리를 이전으로 돌릴 수 있지만, 최종 변경 사항이 사라지기 때문에 사용 주의 필요
* Repository name에 okchat 입력
* Add a README file 체크 안함
* .gitignore 언어별 선택 안함
* license 선택 안함
* Create repository 클릭으로 생성
* Repository name에 okchat 입력
* Add a README file 체크 안함
* .gitignore 언어별 선택 안함
* license 선택 안함
* Create repository 클릭으로 생성
* 로컬 프로젝트와 원격 저장소 연결
* cd ~/git/okchat 폴더로 이동
* git remote add origin <github_address> 명령으로 연결
* origin은 다른 것으로 변경 가능한 별칭
* 주소줄 뒤의 .git은 생략 가능
* git remote -v 명령으로 설정 정보 확인
* 다른 컴퓨터의 경우라고 가정
* VS Code를 종료하고, 터미널 창에서 cd ~/git && mv okchat okchat_ 명령 실행
* 원격 저장소 가져오기(clone)
* git clone <github_address>
* code ~/git/okchat 으로 VS Code 편집기 실행
* 분기해서 작업하는 방법
* 브랜치 만들기
* 브랜치 합치기
* merge
* rebase
* develop 브랜치를 만들어서 커밋한 후에 main에 합치는 예제
* git checkout -b develop
* chat.js 파일에서 var를 const로 수정
* git commit -am "var 2 const"
* 수정된 파일은 -am 옵션으로 한 번에 커밋 가능
* main 브랜치에 develop 커밋을 합치려면 기준을 main으로 잡아야 함
* git checkout main
* main 브랜치에 develop 브랜치 합치기
* git merge develop
* merge comment 창이 나타나면 :wq 입력해서 종료
* merge 커밋이 추가되지 않고, 분기의 기준점을 바꿈
* history가 깔끔하게 유지
* main 브랜치 상태에서 다음 명령 입력
* git rebase develop
* 미완성 파일 임시 저장하고, 브랜치 동기화할 때 필요
* stash: 한 쪽으로 챙겨 두다
* git stash
* stash list
* stash pop
* 왼쪽 아래 상태바에 표시
* 클릭 후 브랜치 생성, 전환 가능
* 로컬 저장소 기준
* 원격은 git fetch로 싱크 필요
* 최초 git checkout -b develop
* 브랜치 목록
* git branch -v
* 브랜치 전환
* git checkout main
* 원격 브랜치 push
* git push origin develop
* 원격 브랜치 삭제
* git push origin :develop
Case 1
1. 같은 부분을 두 명이 동시에 수정하고 커밋할 때
2. 먼저 커밋한 사람은 이상 없음
3. 나중에 커밋한 사람이 해야할 일이 생김
Case 2
1. 로컬에서 열심히 작업했는데, 오랜만에 서버의 최신 상태를 가져올 때
Case 3
2. 대규모 파일 변경이 한꺼번에 원격 저장소에 반영된 것을 가져올 때
Accept Current Change : 위쪽, 내가 코딩한 것을 남기기
Accept Incoming Change : 아래쪽, 선택하고 내가 코딩한 것은 포기
Accept Both Changes : 위 아래 모두 남겨두고 <<<, ===, >>> 라인만 삭제
코드 충돌을 최소화하는 방법
Git, GitHub 처음 사용하는 분을 위한 강의입니다. VS Code의 Git 기본 기능과 Git관련 플러그인 활용할 수 있게 됩니다.
Git의 기본 구조와 커미터 등록하는 법을 알아 봅니다.
간단한 socket 채팅 예제를 통해서 버전 관리를 단계적으로 수행합니다.
VS Code의 UI에서 쉽게 커밋하는 방법을 소개합니다.
브랜치를 만들고, 합치는 기술을 배울 수 있습니다. 코드를 싱크하기 전에 임시로 보관하는 방법도 소개합니다.
코드의 충돌을 해결하고, 코드 충돌을 예방하는 방법을 알게 됩니다.