git이란 소스코드를 효과적으로 관리하기 위해 개발된 분산형 버전 관리 시스템이다
git을 이용해 소스코드를 관리하기 위해 다음과 같은 준비가 선행되어야한다.
1. Git 소스 흐름도
Git 흐름도
git은 4가지의 저장소로 구분된다.
workspace
index(stage)
workspace의 수정된 소스를 저장하는 장소(add)
local repository
원격 저장소 업로드하기 전 저장소(push)
workspace 반영 없이 원격 저장소의 수정사항을 적용할 수 있는 장소 (fetch)
remote repository
원격 저장소
clone 명령어를 통해 소스를 다운로드 할 수 있다.
2. Git 초기 설정
Global 설정
git config --global user.name "사용자명" git config --global user.email "메일 주소"
Local 설정
git config user.name "사용자명" git config user.email "메일 주소"
local 설정 시, 매번 프로젝트 마다 커밋한 유저를 설정해주어야 하지만, global 설정 시 한번만 해주면 된다.
git 설정 확인
git config --list
global 유저 정보 및 원격 저장소 등 현재 경로의 git repository의 설정 정보를 보여준다.
3. Git Clone
Github에 만들어둔 원격 저장소를 다운받아보겠다.
소스를 다운받기전 git 폴더를 만들고, git bash 실행 후 해당 경로로 이동한다.
아래 git 원격 주소는 예시이며, 직접 원격 저장소를 만들어 테스트해야 한다.
cd D:/dev/git git clone https://github.com/Bamdule/test.git
위처럼 출력되었다면 workspace 생성에 성공한 것이다.
해당 폴더 안에는 .git 폴더가 있을 것이다. 해당 폴더는 repository에 대한 각종 정보가 저장되어있다.
4. Git add
workspace에 readme.txt 파일을 생성하고 다음과 같은 명령어를 입력해보자
git status
untracked 상태인 readme.txt 파일
readme.txt 파일은 git에 의해 추적이 안되는 상태이다. 이 상태를 untracked 상태라고 말한다.
git add readme.txt git status
tracked 상태인 readme.txt 파일
위 명령어를 입력하면 readme.txt파일 tracked 상태로 변경되고, index(stage) 공간으로 변경사항이 저장된다.
git add .
위 명령어 입력 시, 모든 추가/변경사항이 index(stage) 공간으로 이동한다.
5. Git commit
index(stage) 공간에서 로컬 저장소로 추가/변경된 사항이 이동한다.
git commit --message "커밋 메시지"
커밋 완료 메시지
6. Git Remote
로컬 저장소의 추가/변경 사항을 원격 저장소에 반영하기 위해서는 원격 저장소를 설정에 등록해야한다.
git remote add 원격지명 원격지주소
git remote add origin https://github.com/Bamdule/test.git git remote -v
원격 저장소 주소 보기
원격지를 잘못입력하여 삭제하고 싶으면 다음 명령어를 입력하면 된다.
git remote remove 원격지명
7. Git push
로컬 저장소의 추가/변경 사항을 원격 저장소에 반영한다.
별다른 브런치를 생성하지 않았다면 자동으로 master 브런치가 생성/적용되어있다.
git push 원격지명 브랜치명
git push origin master
git push 완료 메시지
github 원격 저장소에 업로드 된 readme.txt
github repository에서도 확인할 수 있다.
8. Git pull
원격 저장소에 공동 작업자가 새로운 기능을 업로드 했을 때, 자신의 로컬 저장소와 workspace에 반영한다.
임시로 직접 github에서 pull_test.txt 파일을 등록해보자
repository list > create new file > 파일명 및 내용 입력 > commit new file
git pull origin master
pull_test.txt 파일을 다운받은 것을 볼 수 있다.