🔸 git 공식명칭: 분산 버전 관리 시스템(VCS)
프로젝트 파일의 변경 사항을 추적
하는 시스템.
🔸 Repositories(저장소) 란?
❗️ 버전 관리(VCS - Version Control System)란?
버전 관리 시스템은 파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템이다. 실제로 거의 모든 컴퓨터 파일의 버전을 관리할 수 있다.VCS을 사용하면,
각 파일을 이전 상태로 되돌릴 수 있고, 프로젝트롤 통째로 이전 상태로 되돌릴 수 있고, 시간에 따라 수정 내용을 비교해 볼 수 있고, 누가 문제를 일으켰는지도 추적할 수 있고, 누가 언제 만들어낸 이슈인지도 알 수 있다.
또한 파일을 잃어버리거나 잘못 고쳤을 때도 쉽게 복구할 수 있다.
- 분산 버전 관리 시스템(DVCS)
git
과 같은 DVCS에서의 클라이언트는 단순히 파일의 마지막 스냅샷을 checkout 하지 않는다. 그냥 저장소를 히스토리와 더불어 전부 복제한다(Clone).
서버에 문제가 생기면 이 복제물로 다시 작업을 시작할 수 있다. 클라이언트 중에서 아무거나 골라도 서버를 복원할 수 있다.
git
은 데이터를 파일 시스템 스냅샷의 연속(stream)으로 취급하고 크기가 아주 작다. 커밋하거나 프로젝트의 상태를 저장할 때마다 파일이 존재하는 그 순간을 모두 기록하며, 파일이 달라지지 않았으면 파일을 새로 저장하지 않는다(성능을 위해).
시간 순으로 프로젝트의 스냅샷을 저장한다.
- GIT의 특징
- 오프라인 및 로컬에서 조회 가능
👉 거의 모든 명령이 로컬 파일과 데이터만 사용하기 때문에 네트워크 속도의 영향을 받지 않는다. 프로젝트의 모든 히스토리가 로컬 디스크에 있기 때문에 모든 명령이 순식간에 실행된다.
프로젝트의 히스토리를 조회할 때 서버 없이 조회- 오직 데이터를 추가하는 기능
👉 git 데이터베이스에 데이터가 추가된다. 일단 스냅샷을 커밋하고 나면 데이터를 되돌리거나 삭제할 방법이 없다.- 3가지 기본적인 상태 알기
👉Modified
: 수정한 파일을 아직 로컬 데이터페이스에 커밋하지 않은 것을 의미. (아직 로컬에만 존재)
👉Staged
: 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태를 의미. (Staging Area 단계에 있음. 여기서 커밋하면 스냅샷으로 저장됨)
👉Committed
: 데이터가 로컬 데이터베이스에 안전하게 저장되었다는 것을 의미.
git directory
(깃 디렉토리)는 git이 프로젝트의 메타데이터와 데이터베이스를 저장하는 곳을 말한다.(git의 핵심)
다른 컴퓨터에 있는 저장소를 Clone할 때, git디렉토리가 만들어진다.Staging Area
는 git directory에 있다. 단순한 파일이고, 곧 커밋할 파일에 대한 정보를 저장한다.
커밋할 스냅샷을 만든다. Staging Area에 있는 파일들을 커밋해서 git directory에 영구적인 스냅샷으로 저장한다.- Checkout 하고 나서 수정했지만, 아직 Staging Area에 추가하지 않았으면 Modified이다.
🔸 git 최초 설치 & 설정(git bash
기준)
git 설치 후 확인 명령어(버전 확인, git이 설치 되어 있는지 확인할 수 있다)
git --version
git 본인 정보 등록 명령어(이름&이메일, 최초 한 번만 등록하면 됨)
git config --global user.name "your name"
git config --global user.email "email address"
❗️--global
옵션으로 설정하는 것은 딱 한번만 하면 된다.
(프로젝트마다 다른 이름/이메일을 사용하고 싶다면, --global
옵션을 빼고 명령을 실행하면 된다)
설정한 모든 내역을 확인하는 명령어
git config --list
명령어에 대한 옵션들을 찾아보고 싶을 때 사용하는 명령어
git add -h
🔸 git 저장소 만들기
방법1) 아직 버전관리를 하지 않는 로컬 디렉토리를 하나 선택해서 git저장소를 적용하는 방법.
방법2) 버전 관리중인 git저장소에서 Clone하는 방법.
위 2가지 방법 모두, 로컬 디렉토리에 Git저장소가 준비되면 git을 통해 버전관리를 할 수 있다.
방법1) 나의 로컬 디렉토리에서 git저장소 적용하기
1) 로컬 디렉토리 내 프로젝트 폴더에 위치하기
cd / Users / user / (project folder name)
cd / c / user / (project folder name)
2) git 시작하기
git init
❗️위 명령어를 통해 .git
이라는 하위 디렉토리를 만들어준다. .git
디렉토리에는 저장소에 필요한 뼈대파일이 들어있다. 이 명령만으로는 아직 프로젝트의 어떤 파일도 관리하지 않는다.(git이 이 파일을 관리하게 하려면 저장소에 파일을 추가(git add
)하고 커밋(git commit -m
)해야 한다.
방법2) 기존 저장소를 Clone하기
1) clone 명령어 실행하기 (내 프로젝트 폴더로 바로 클론)
git clone (git source code url)/(project folder name)
<요약 - 터미널에서 명령어로 컨트롤 (❗ 띄어쓰기 유의)>✨✨✨
1) 프로젝트 폴더로 이동하여.git 디렉토리
생성
👉 현재 저장소에 대한 모든 변경사항을 이제부터 git이 추적/관리한다.
git init
2) git commit 하여 수정 사항 적용
👉 git commit이란, 현재 상태를 나타내는 스냅샷과 같다(현재 버전의 코드를commit
에 저장), 프로젝트의 진행 상황을 효율적으로 관리할 수 있다.
❗ 커밋을 남기는 시점은 특정 내용, 기능을 추가한 후 / 수정 사항을 적용한 후
git commit
git commit -m "(변경사항 요약 내용)"
➡ 커밋 메시지 남기기git log
➡ 모든 commit 내용 확인3) 추가 또는 수정한 후에는 꼭 현재 상태를 확인한다
👉 변경사항 확인
git status
4) 파일을 추가한 뒤 깃에 저장
👉 특정 파일(=파일명), 모든 파일(=.)
❗ 여러개의 특정 파일을 저장하고 싶다면 각각의 파일명을띄어쓰기
로 구분
git add 파일명
/git add .
/git add 파일명 파일명 파일명
🔸 Branches 만들기
main에서 뻗어나온 가지
).main(또는 master)
라는 이름의 브랜치를 만든다(=기준이 되는 브랜치)master
브랜치(기준) 외 새로운 브랜치(추가)를 만들어서 작업 선언(=git checkout
)하지 않는 이상, 모든 작업은 master브랜치에서 이루어진다.
- 브랜치 생성
git branch 브랜치이름
- 다른 브랜치로 이동(ex. main branch -> 추가 하위 branch)
git checkout 브랜치이름
- 브랜치 삭제
git branch -d 브랜치이름
❗️checkout(브랜치 이동) 꼭 해주기!
현재 위치한 브랜치 항상 확인하기(checkout상태 확인)
🧐 워킹 디렉토리(=현재 작업중인 내 브랜치)는 크게 2가지로 나뉜다.
Unmodified
(수정하지 않음), Modified
(수정함), Staged
(커밋으로 저장소에 기록할 예정단계)상태 중 하나이다.🔸 터미널
명령어
🚀
cd
- change directory (원하는 디렉토리 안으로 들어가기)
cd ~
/cd desktop
: 바탕화면 돌아가기cd (폴더/파일명)
: 해당 폴더/파일로 들어가기🚀
mkdir
- make directory (폴더/파일 만들기)
mkdir (디렉토리 이름)
: 디렉토리 생성🚀
ls
- list의 약자
- 현재 위치(desktop 또는 특정 폴더 안)에 속해있는 리스트를 보여줌
li -al
: 전체 상세 리스트 보여주기🚀
cd..
- 디렉토리 한 단계 위(전)로 가는 것(전단계 이동)
🚀
pwd
- 현재 위치 확인
🚀
rm -rf
- 삭제 기능.
rm -rf 폴더/파일명
을 명령하면 해당 내용이 삭제됨🚀
vi
- 특정 파일 안으로 들어간다
vi (파일명)
: 해당 파일 페이지로 접근하며, 터미널 창이 변한다.(해당 파일 페이지 내부로 들어왔기 때문)- 페이지 내부로 들어오면 기본적으로 '수정불가 모드(insert mode)'이다.
i
: insert모드로 전환(수정 가능한 상태) ➡ 작업 내용 작성하기
esc
+:
+w
+q
: 저장한 뒤 페이지에서 빠져나오기🚀
touch
- 파일 생성 (ex. touch test.js)
❗ls
로 확인해보면 생성된 파일 확인할 수 있다🚀
cat
- 터미널에
파일내용
출력 ➡vi
로 접근한 페이지 내부에서 작성한 내용을 터미널에서 열어볼 수 있다.cat (파일명)
🚀
cp
- 폴더/파일 복제 기능
cp (파일명) (복제하고자 하는 파일명)
🚀
mv
- 폴더/파일 이동 기능
mv (파일명) (이동하고자 하는 폴더명)
❗cd (이동한 폴더명)
로 위치를 이동해서ls
를 통해 확인해보면 이동한 파일명을 확인할 수 있다
🔸
git
명령어🚀
git log
- 저장소의 커밋(commit)히스토리를 조회(시간순)하는 명령어.
(가장 최근의 커밋이 가장 먼저 나온다)git log -p -2
: 최근 2개의 결과만 보여주는 옵션(git log -p -Number
)🚀
git rm
- Staging Area 와 워킹 디렉토리(로컬)에 있는 파일 삭제(실제 파일도 지워진다).
git rm 파일명
을 명령하면 해당 내용이 삭제됨
(git status
로 잘 삭제되었나 확인해보기 /git commit
하면 삭제된 파일은 더이상 추적되지 않는다.)- Staging Area에서만 제거하고, 워킹 디렉토리에 있는 파일은 지우지 않고 남겨두고 싶을 때 :
git rm --cached 파일명
🚀
git mv (변경전file) (변경후file)
- git은 파일이름의 변경이나 파일의 이동을 명시적으로 관리하지 않기 때문에, 파일 이름이 변경됐다는 별도의 정보를 저장하지 않는다.
따라서 git이 파일의 이름이 변경된 것을 알 수 있도록 명령어를 준다.
git mv BeforeChangeFile AfterChangedFile
을 명령하면 해당 내용이 삭제됨
(git status
로 잘 바뀌었나 확인해보기)git mv
명령어는 아래 2가지를 수행한 것과 똑같다
$ git rm BeforeChangeFile
$ git add AfterChangedFile
https://git-scm.com/book/ko/v2/Git%EC%9D%98-%EA%B8%B0%EC%B4%88-%EB%90%98%EB%8F%8C%EB%A6%AC%EA%B8%B0
🔸 git을 사용하는 프로젝트를 위한 호스팅 서비스
🔸 내 로컬 Repository를 GitHub 에 push 하기
---<
Github
>---
1. Github 에서 새 repository를 생성한다. (README 선택X)---<
local
>---
2. 로컬에서 폴더를 생성해준 뒤 터미널에서cd 폴더명
으로 들어간다
git init
을 선언한다 (.git
폴더 생성됨)
- 나의 로컬 repository 를 GitHub repository 와 연결한다.
git remote add origin (깃허브 주소)
❗git remote -v
를 통해 잘 연결되었나 확인해보기
- 새 remote 를 이용하여 코드를 Push 한다.(
git push
명령어는 로컬 Git repository 의 코드를 GitHub repository 로 업로드 한다)
❗git push origin main
을 통해 나의 local의 모든 내용을 github에 올리기
Clone
하기👉 github에서 클론하고자 하는 repository
에서 주소 복제하기
👉 local 터미널에서 복제한 주소로 클론하기
클론
하기(cd
를 통해서 해당 폴더 안에서 명령어 작성)git clone (복제한 주소 붙여넣기)
shift
+ insert
👉 클론이 진행된 후에는 나의 local에 wecode폴더 ➡ westagram-frontend 폴더 생성
(westagram-frontend 폴더 자체를 클론했기 때문에, 해당 폴더가 내가 지정한 폴더 안에 생김)
❗ cd westagram-frontend
를 통해 해당 폴더로 들어갈 수 있다. 이제부터는 이 위치에서 작업을 시작
👉 내가 작업할 환경인 branch
생성 (보통 '기능
'을 기준으로 브랜치 명을 정함)
git branch feature/login
(기능을 기준으로 브랜치명을 만든 경우
git branch feature/saebom
(내 이름으로 브랜치명을 만든 경우)
❗ 브랜치가 잘 만들어졌나 확인해보려면 git branch
를 명령한다. 해당 명령어를 치면 어떤 브랜치들이 있는지 확인할 수 있다.
❗ 현재 (feature/saebom)
브랜치가 생성된 상태이며, 위치는 main
이다.
(해당 브랜치 안으로 들어가는 명령어를 해줘야 한다!!!)
👉 내가 만든 branch
로 들어가기
git checkout feature/saebom
(feature/saebom
브랜치에 초록불)
👉 vs code
에서 작업하기
❗ git bash에서 한 모든 위와 같은 작업은 vs code 에서 터미널을 열어서 할 수 있다(ctrl+j
)
작업 완료(코드 쓰기) 후 꼭 진행해야 하는 4단계
- 변경 사항 확인
git status
- Stage
git add .
- Commit
git commit
-컨벤션 지키기(회사마다 다름)
➡esc + :wq
로 저장하고 빠져나오기
➡git log
로 커밋메시지 내역 확인하기- Push
git push
➡git push origin feature/saebom
- Pull Request
🚫 git conflic(깃 충돌)을 방지하기 위한 매뉴얼