이 글은 24.01.29에 본인 벨로그에 작성했던 글을 옮겨 온 것이다.
VCS(Version Control System)
- 버전version이란?
: 유의미한 변화가 결과물로 나온 것으로, 자세히 말하자면 특정 매체에서 수정이 이루어질 때 각각의 수정을 마친 결과물을 의미한다.- VCS(Version Control System)란?
: 말 그대로, 버전을 관리하는 시스템. 대표적으로 Git이 있다.
CMS(Configuration Management System형상 관리 시스템)로 불리기도 한다.- VCS는 왜 필요한가?
: 프로젝트 개발이란,
상기 이유들로 인해 VCS는 프로젝트 개발에 반드시 필요하다.- 분산 VCS
: VCS가 여러 형태를 거쳐 개선되어, 오늘날 쓰이고 있는 VCS 중 하나. Git 또한 분산 VCS다. 다른 형태의 VCS도 있으나, 요즘은 대부분 VCS로 Git을 사용한다.
Git
Git의 버전관리
- VCS의 데이터 저장 방식
파일의 초기 버전을 가져오려면 데이터의 연산량이 많다는 단점이 있었다.
- Git의 데이터 저장 방식
Git의 데이터 저장 방식의 핵심은 스냅샷을 이용해 버전을 관리한다는 것.
- Git의 구성요소
1) 작업 디렉토리Working Directory : 흔히, 우리가 보는 폴더라고 생각하면 된다. 버전 관리의 대상이 위치하는 공간이다.
2) 스테이지Stage(Staging Area, Index) : 다음 버전이 될 후보가 올라가는 공간
3) 저장소Repository : 버전이 만들어지고 관리되는 공간
스테이지와 저장소는 git이 관리하는 가상의 공간이다.
하나의 버전은, 아래와 같은 과정을 거쳐 만들어진다.
W.D에서 변경사항 생성 후 'Add'
=> 버전이 될 후보들이 스테이지에 등록됨
=> 스테이지에서 'Commit'
=> 스테이지의 내용이 버전이 되어 저장소에 등록됨
- Git에서 파일의 상태
1) Untracked : Add를 하지 않아 Git에 아무것도 등록되지 않은 상태. 즉, Git에서 해당 파일은 관리대상이 아님.
2) Tracked : Add 후 스테이지에 올라간 후의 상태. 관리대상이 됨.
2-1) Staged : 작업 디렉토리에서 스테이지로 Add 된 파일. 버전 후보.
2-2) Committed : 스테이지에서 저장소로 Commit 된 파일. 버전 생성.
2-3) Modified(Unstaged) : 버전 생성 후 수정된(Edit 된) 파일. 이미 Commit 된 파일을 수정한 것이기 때문에, 이 상태에선 Commit할 수가 없다. 커밋 하기 위해서는 다시 Stage로 보내야 한다.
Git 설정
- Git 설정 기본 문법
- 유저 이름, 이메일 설정
- CRLF(End of Line) 설정 : Line의 마지막을 표기하는 문자.
- Editor 설정 : 유저별로 어떤 에디터를 쓸 지 설정 가능.
- Git 전체 설정 확인
- Git 범위별(Global? local? 등...) 설정 확인
- Git 항목별(유저 이름, CRLF, 에디터, branch 이름 등...) 설정 확인
** git config -help 를 입력하면 명령어 관련 도움말을 볼 수 있다.
Git Repository
- 저장소Repository
- Git Repository 만들기
Repository로 사용하고자 하는 폴더 경로에 접속해서 아래 코드 실행
=> 해당 폴더가 git의 repository 가 된다.
실습해보자.
- git_ws라는 폴더 내에, test_project라는 폴더를 만들어 해당 폴더를 local repository로 만들기.
Git 기본 사용법
- Git Status
- Git add
- Git commit
=> Staged 상태를 생략 가능하다는 것은, add와 commit까지 한 번에 할 수 있다는 말이다.
- Git ignore
- Git rm(remove)
- Git mv(move)
Git history
- Git log : 저장소의 커밋 이력을 시간 순으로 보여준다.
이 외에도 아래와 같이 여러 옵션을 줄 수 있다.
1) -n : 최근 n개의 커밋만 표시
2) --skip n : 최근 커밋 중 n개의 커밋을 생략하고 표시
3) -p : 커밋 별 변경된 내용을 출력
4) --oneline : 커밋 내용을 간단하게 한 줄만 출력
5) --author=username or useremail : 유저 별 커밋 내용 출력
6) -S 검색어 : 커밋의 변경사항 중 '검색어'를 포함하는 커밋 출력
7) --grep 검색어 : '검색어'를 포함하는 커밋 메시지를 갖는 커밋 출력
'STUDY > 기타 IT' 카테고리의 다른 글
[Git] Remote repository / Checkout & branch / Merge & Conflict / tag (2) | 2024.03.19 |
---|---|
[Github] Repository에 파일, 프로젝트 올리기 (2) | 2024.01.02 |
[Tool] - ERD 생성 사이트 (0) | 2023.12.26 |
[Github] New Repository 만들기 (4) | 2023.12.22 |