버전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 검색어:'검색어'를 포함하는 커밋 메시지를 갖는 커밋 출력