Git
소스코드를 효율적으로 관리하기 위한 형상 관리 도구
분산형 버전 관리 구조로서 서버에 접속하지 않아도 개인 레포를 통해 작업 가능
<git의 기본 작업 영역>
- 작업 디렉토리: 현재 PC에서 작업을 진행중인 디렉토리
- 스테이징 영역: 작업 내용이 저장되는 임시 공간. Git에 의해 추적 관리됨(add명령어)
- 로컬 저장소: 커밋이 영구적으로 저장되는 영역. clone한 커밋들이 존재함
- Git 기본 플로우: Remote 저장소를 로컬로 Clone → 작업(add, commit)→ 로컬에 저장 → Remote 저장소로 push
Github
1. Git 프로젝트 원격저장소의 효율적인 관리를 지원하며 오픈 소스 프로젝트 생태계 확장에 기여하고 있는 웹 기반 플랫폼 서비스.
개인 Private저장소를 운영 하는 것 외에는 무료.
- 저장소 관리
- 코드 공유, 리뷰
- 이슈 관리
- 팀원 관리
Git기본 환경 설정
git 설치 후 git bash에서 사용자 이름, 메일 등록
git config --global user.name "name"
git config --global user.email "email address"
설정 정보 확인
git config --global --list
로컬 저장소 초기화
git init
해당 명령어로 저장소가 초기화 되며 변경 파일들을 추적/관리할 수 있는 . git폴더가 생성됨
본인의 로컬 저장소를 원격 저장소와 연결(기본 브랜치 이름: master)
git status
현재 폴더 내 파일의 상태 확인
→ .git으로 모든 변경 내역을 추적하므로 .git 폴더가 있어야됨
git add
파일의 변경 내용을 스테이징 영역에 저장(Unstaged->staged)
* 수정→ add → commit → push 순
git commit
스테이징 영역에 저장된 기록을 로컬 Repo에 영구적으로 저장.
커밋 시 커밋 메시지를 만들어야 함
- git commit → 상단에 메시지 등록→ wq!
- git commit -m "커밋 메시지"
- 가장 마지막 커밋의 커밋메시지를 변경하고 싶을 때, 마지막에 commit한 파일 내역을 수정하고 커밋 메시지를 변경 하고 싶을 때 → git commit --amend
원격저장소와 로컬 저장소 연결
github/bit bucket에서 새 Repo 생성 → git clone "Repo주소" 명령어로 로컬에 저장
- git remote add "저장소 별칭" "저장소 주소"
- git remote -v 명령어로 원격 저장소와 연결 여부 확인 → 본인의 로컬 repo가 원격 repo와 연결됨
* upstream: 임의로 지정한 별칭
git log
커밋 히스토리 확인(2번의 커밋기록, 가장 최근 내역이 상단에 배치)
- commit: 커밋의 ID(SHA-1이라는 해쉬값)
- hello, test는 각 커밋의 커밋메세지
- Author: 커밋 한 유저
- Date: 커밋 반영 날짜와 시간
git log를 활용한 코드의 복귀
커밋 로그를 활용해 코드를 이전으로 복구 시킬 수 있음. reset, revert명령어가 자주 쓰임
reset: 커밋 기록을 아예 없애버리고 이전으로 복귀
원래 상태>
git reset --hard a0fvf8 명령어 입력 후
revert: 커밋 기록은 유지한 채(파일 변경 후 새로 커밋을 생성한 뒤 코드 복귀)
- 실습: 기존 커밋 기록과 파일 상태(4번 라인 추가)
git revert 50a922dc89c83270d3eb4415403939c7b03a7409 명령어 입력
→ 기존의 커밋 기록은 남긴 채 새로운 revert커밋이 생성되었고, 파일이 이전 상태로 원상 복구됨
원래 상태>
명령어 입력 후>
git diff
작업 디렉토리에서 코드 변경 내역 확인
* hello.txt파일에서 직접 수정한 상태(add하기 전)
원격 저장소에 파일 푸쉬하기
- 현재 로컬 저장소 상태: hello.txt파일이 존재( add/coomit까지 완료한 상태)
- 현재 원격 저장소 상태: test라는 이름의 Repo만 생성해둔 상태
- 현재 원격 Repo 연결상태: blank(어떠한 원격Repo와도 연결되지 않은 상태)
- 순서: 로컬Repo↔원격Repo 연결 및 원격Repo에 Push
- 연결할 원격 Repo의 주소와 사용자가 지정할 원격 Repo의 별칭 지정
- git remote add "원격저장소 별칭" "원격Repo주소"
- git remote add upstream "원격 레포 주소"
* 원격Repo를 Clone하면 로컬에서 저절로 origin이라는 이름으로 원격서버와 연결됨
- 파일 내용 수정 후 commit(실습 차원)
- hello.txt의 파일 내용을 수정 후 test라는 커밋메시지로 commit
- 원격Repo로 Push 후 확인
- git push "원격Repo 별칭" "로컬branch"
- git push upstream master
→ 원격Repo에 master브랜치가 생성됨
원격레포에서 파일 수정 후 로컬과 동기화
순서: 원격Repo에서 파일 직접 수정→ 로컬과 동기화→ 로컬에서 파일 수정→ 원격push
- 원격Repo에서 파일 수정(test1이라는 커밋 메시지로 푸시)
- 로컬에서 동기화
- git pull: 원격Repo의 커밋기록을 로컬로 fetch한 뒤 로컬 기록과 merge(동기화)
- git pull "원격Repo 별칭" "로컬브랜치"
- git pull upstream master
- 로컬에서 clone한 상태라면 git pull만 입력해도 됨.
**협업 시에는 git pull을 통해 프로젝트의 최신 커밋들을 로컬로 가져와서 병합한 뒤 작업