🔸 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 init2) git commit 하여 수정 사항 적용
👉 git commit이란, 현재 상태를 나타내는 스냅샷과 같다(현재 버전의 코드를commit에 저장), 프로젝트의 진행 상황을 효율적으로 관리할 수 있다.
❗ 커밋을 남기는 시점은 특정 내용, 기능을 추가한 후 / 수정 사항을 적용한 후
git commitgit commit -m "(변경사항 요약 내용)"➡ 커밋 메시지 남기기git log➡ 모든 commit 내용 확인3) 추가 또는 수정한 후에는 꼭 현재 상태를 확인한다
👉 변경사항 확인
git status4) 파일을 추가한 뒤 깃에 저장
👉 특정 파일(=파일명), 모든 파일(=.)
❗ 여러개의 특정 파일을 저장하고 싶다면 각각의 파일명을띄어쓰기로 구분
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(깃 충돌)을 방지하기 위한 매뉴얼
