• 기능 : 분산형 버전 관리 시스템의 한 종류이다.
- 버전 관리란?
- 각 파일을 이전 상태로 되돌릴 수 있다.
- 프로젝트를 통째로 이전 상태로 되돌릴 수 있다.
- 시간에 따라 수정 내용을 비교해 볼 수 있다.
- 누가 문제를 일으켰는지도 추적할 수 있다.
- 누가 언제 만들어낸 이슈인지도 알 수 있다.
- 파일을 잃어버리거나 잘못 고쳤을 때도 쉽게 복구할 수 있다.
세 가지 상태
Git은 파일을 Committed, Modified, Staged 이렇게 세 가지 상태로 관리합니다.
- Committed : 데이터가 로컬 데이터베이스에 안전하게 저장됐다는 것을 의미합니다.
- Modified : 수정한 파일을 아직 로컬 데이터베이스에 커밋하지 않은 것을 말합니다.
- Staged : 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태를 의미합니다.
이 세 가지 상태는 Git 프로젝트의 세 가지 단계와 연결돼 있습니다. Git directory, Working Tree, Staging Area 단계가 있습니다.
Git directory 는 Git이 프로젝트의 메타데이터와 객체 데이터베이스를 저장하는 곳을 말합니다. 이 Git 디렉토리가 Git의 핵심입니다. 다른 컴퓨터에 있는 저장소를 Clone 할 때 Git 디렉토리가 만들어집니다.
Working Tree 는 프로젝트의 특정 버전을 Checkout 한 것입니다. Git 디렉토리는 지금 작업하는 디스크에 있고 그 디렉토리 안에 압축된 데이터베이스에서 파일을 가져와서 워킹 트리를 만듭니다.
Staging Area 는 Git 디렉토리에 있습니다. 단순한 파일이고 곧 커밋할 파일에 대한 정보를 저장합니다. Git에서는 기술용어로는 “Index” 라고 하지만, “Staging Area” 라는 용어를 써도 상관없습니다.
Git으로 하는 일은 기본적으로 아래와 같습니다.
- Working Tree 에서 파일을 수정합니다.
- Staging Area 에 파일을 Stage 해서 커밋할 스냅샷을 만든다. 모든 파일을 추가할 수도 있고 선택하여 추가할 수도 있습니다.
- Staging Area 에 있는 파일들을 커밋해서 Git 디렉토리에 영구적인 스냅샷으로 저장합니다.
Git directory 에 있는 파일들은 Committed 상태입니다. 파일을 수정하고 Staging Area에 추가했다면 Staged입니다. 그리고 Checkout 하고 나서 수정했지만, 아직 Staging Area에 추가하지 않았으면 Modified입니다.
설치 방법
Linux에 설치
Fedora에서 'dnf'
sudo dnf install git-all
Ubuntu등 데비안 계열 'apt'
sudo apt install git-all
Mac에 설치
- Terminal에 'git' 입력
- Homebrew가 설치돼있으면 아래 코드를 입력하면 된다.
brew install git
Windows에 설치
Git - Downloading Package (git-scm.com)
초기 설정
Git을 설치하고 나서 가장 먼저 해야 하는 것은 사용자이름과 이메일 주소를 설정하는 것이다. Git은 커밋할 때마다 이 정보를 사용한다.
시작 - git폴더 - Git Bash 실행
아래와 같이 콘솔창이 나오면 정상실행 완료!
사용자 정보
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
위에 쓰인 you@example.com, Your Name 부분을 본인 이메일, 이름으로 수정해서 Enter를 해주면 된다.
시작하기
- git init 를 터미널에 쳐서 .git이라는 폴더 만든다.
- git 명령어:
- git status // 상태 파악
- git status --short // 혹은 -s하면 짧게 볼 수 있음 (-- 를 앞에 붙이면 전체 단어를 씀)
- git add 파일명 // (ex. basic.html)을 하면 index에 올라온 상태
git add . // (.은 해당폴더)(*은 전체폴더) 현재 폴더에 있는 모든 것을 업로드한다는 뜻
- git commit // 터미널에서 commit하기 (commit창 뜨고 간단한 메모 쓰고 끄면 저장됨)
git commit -m "n 번째 커밋입니다." // 커맨드 창에서 바로 메모 쓰고 commit할 수 있는 기능, 창 안뜸
git commit -am "n 번째 커밋입니다." // add하면서 바로 commit까지 하기
(※ 만약, git commit시 터미널에서 하라고 나오면 내용 간단하게 쓰고, 맨 밑에 :q하면 그냥 꺼짐, :wq누르면 저장하고 꺼짐)
- git log // 커밋 기록 확인할 수 있음
git log --oneline // 로그 간단하게 보여줌 한 줄씩
git log --graph // 간단하게 디렉토리를 표시해줌
(근데 Extensions에서 git graph 찾아서 설치하고 Source control에서 누르면 더 가시적으로 볼 수 있음)
- git --help // 간단한 명령어들 알려줌
**저장된 기록을 되돌릴 수 있는 방법(stage->work tree)
1. add // 스테이지로 올린다
- git add . //
2. restore // 스테이지에 올라와 있는 것을 취소한 방법
- git restore --staged 파일명 // stage에 올라간 파일 다시 내릴 수 있음
3. - git diff --staged // 뭐가 변경되었는지 확인할 수 있다.
** 저장한 기록을 되돌릴 수 있는 방법(commit -> stage) // 반드시, commit이 된 상태로 움직여야 함, 무조건 commit 먼저 하기)
// 마스터(혹은 메인이라고도 함)가 항상 기본이라고 생각해야 함
1. reset // 버전기록을 삭제하는 방법, 파일은 남아있음
- git reset 예전버전의 해시값 // 7글자 적어준 코드의 위부터 저장하고 commit된 버전이 없어짐(7글자 코드까지만 저장됨)
2. revert // reset과는 다르게 이전 기록들이 남으면서 새로운 버전이 됨 (버전을 rollback)
- git revert
3. branch // resvrt와는 달리 되돌아가지만 새로운 브랜치가 생성됨, 이전 기록들 남음
- git checkout 해시값 // git log --oneline에서 나오는 7글자(=해시값) 원하는 버전에 왔다갔다 할 수 있음
git checkout - // 다시 원래의 마지막 상태로 돌아감
git checkout HEAD // ????
- git swith -c 새로운브랜치이름 // checkout의 역할이 너무 많아지면서 새로 생긴 기능, 브랜치를 만들면서 바로 이동 가능(c의 뜻은 creat)
- git branch 이름설정 // 브랜치 만들기
- git branch // 현재 생성되어 있는 브랜치들 확인, 여기서 checkout해서 원하는 브랜치로 이동할 수 있음
git branch 원래이름 바꾸고싶은이름 // 기 설정된 브랜치 이름 바꿀 수 있음
- git show 7글자 // 바꾼 내용 보여줌
* HEAD // 꼬리표 개념, 현재 내가 있는 위치를 가리킨다.
'IT > Git & Github' 카테고리의 다른 글
[Git 오류] warning: LF will be replaced by CRLF (0) | 2023.06.25 |
---|---|
Git 브랜치 (0) | 2023.06.04 |
Git 명령어 3 (0) | 2023.06.04 |
Git 명령어 2 (0) | 2023.06.01 |
Git 명령어 1 (0) | 2023.06.01 |