본문 바로가기

SCM/Git

(23)
07. Git 상태 확인하기 - git status, git diff 파일 상태 확인하기 레포지토리의 상태를 보여주는 명령인 git status 명령을 사용하면 관리되고 있는 파일과 디렉토리 목록을 확인해 볼 수 있다. 실행에 앞서 앞서 살펴본 Git 레포지토리에서 파일의 라이프 사이클을 한번 보고 시작하자. 예를 들어 아래와 같이 이 명령을 실행하면 아래와 같은 메시지를 볼 수 있고 이는 파일을 하나도 수정하지 않았다는 것을 말해준다. 이 상태에서 파일을 해당 폴더에 README 파일을 하나 추가하고 git status 를 해보면 해당 파일이 Untracked 파일이라는 것을 확인할 수 있다. 이 README 파일을 add 하고 git status 해보면 변경사항이 Commit 되었다고 나오는데 이것의 의미는 Staging Area 에 파일이 올라갔다는 것을 의미한다. ..
06. Git 에서 관리할 파일 설정하기 - .gitignore 관리할 파일은 프로젝트와 관련된 파일들만 Git 레포지토리에 관리해야 한다. 이외 LOG 파일이나 OS 에서 생성하는 파일, 빌드 시스템이 자동으로 생성한 파일이 그렇다. 그런 파일을 무시하려면 .gitignore 파일을 만들고 그 안에 무시할 파일 패턴을 적는다. 패턴 - 아무것도 없는 라인이나 # 로 시작하는 라인은 무시한다. ( 주석을 적음 ) - 슬래시 (/) 로 시작하면 하위 디렉토리에 적용되지 않는다. ( Recursive 한 것을 막음) - 디렉토리는 디렉토리명/ 형태로 준다. - 느낌표(!) 뒤 패턴은 무조건 추가한다. ( 앞서 무시하라고 했어도 ) - 표준 Glob 패턴을 사용한다. ( ex > a/**/z => a/z, a/b/z, a/b/c/z .. ) # 확장자가 .a인 파일 무시 ..
05. Git 시작하기 - git init, git clone Git 의 저장소를 만드는 방법은 두 가지가 있다. 기존 프로젝트를 Git 저장소를 새로 만드는 방법이 있고 다른 서버에 있는 저장소를 Clone 하는 방법이 있다. 기존 디렉토리를 Git 저장소로 만들기 새롭게 관리한 저장소를 만드는 방식이다. 아래 명령은 .git 이라는 하위 디렉토리를 해당 디렉토리 위치에 만든다. .git 디렉토리에는 저장소에 필요한 뼈대 파일이 들어있다. 즉 아래 명령은 현재 디레토리를 Git 레포지토리로 설정하는 명령이다. $ git init 이 상태에서 git bash 로 접근하면 만들지 않은 master 라고 하는 브랜치가 자동으로 생성되어 이 부분에서 작업이 진행되게 됨을 알 수 있다. 기존 저장소를 Clone 하기 이미 만들어진 저장소를 들고오는 방식이다. 다른 프로젝트..
04. Git 설정하기 Git 에서는 책임성을 유지하기 위해 커밋한 사람의 email 과 이름이 반드시 필요하다. 이는 git config 라는 도구로 설정 내용을 확인하고 변경할 수 있다. Git 은 이 설정에 따라 동작한다. 이때 사용하는 설정 파일은 세 가지나 된다. Local (working directory 경로 /xxx/.git/config) 가 최우선으로 고려되고 그 다음이 Global (USER_HOME/.gitconfig) 그리고 System (시스템 전역 경로 ) 순으로 역순으로 우선순위를 가진다. 가능하면 시스템 전역 경로에 있는 config 는 건들지 않는다. System git bash 로 들어가서 확인하면 된다. /etc/gitconfig 라는 파일로 저장된다. Global Git 을 설치시 Git 의..
03. Git 설치하기 Windows https://git-scm.com/downloads 들어가면 운영체제에 맞는 버전을 알아서 찾아 놓고 있다. 그냥 클릭해서 받으면 되고 설정은 Default 로 사용하면 된다. 윈도우에 인스톨 하는 경우 리눅스 터미널에서 사용하는 기본적인 명령어들을 같이 설치하기 때문에 조금 오래 걸린다. 리눅스 및 MAC 아래 문서를 확인해서 설치하면 된다. https://git-scm.com/book/en/v1/Getting-Started-Installing-Git
02. Git 파일의 상태와 기본 Flow Git 레포지토리에서 파일의 라이프사이클 워킹 디렉토리의 파일은 관리대상인 Tracked(추적하는..) 와 관리대상이 아닌 Untracted 로 나뉜다. 처음에 .git 에 Add 를 하면 Staging area 에 올라가고 .git 데이터 베이스에 파일이 등록 된다. 이 상태에서 Commit 하면 관리대상인 Tracked 가 되는 것이다. Tracked 상태인 파일은 한번이라도 스냅샷을 뜬 ( Repository 에 Commit 한 ) 파일을 말한다. 기본 동작 흐름 파일의 상태를 바탕으로 간단히 생각해 보면 다음과 같다. 기본적으로 파일을 add 하여 파일을 Staging Area 에 올리면 ( .git 의 DB 에 등록 ) 이땐 아직 Modified/Unmodified 를 따지지 않는다. 이후 Co..
01. Git 의 내부 Git 동작의 핵심 Key-Value ( 파일이름 - 파일데이터) 데이터 저장소 어떤 형식의 데이터라도 집어넣을 수 있고 해당 Key 로 언제든지 데이터를 다시 가져올 수 있다. 스냅샷 데이터를 가저오거나 프로젝트를 저장할 때마다 그 시점의 파일에 대해서 스냅샷을 저장하며 변경되지 않은 파일은 다시 저장하지 않고 이전에 지정한 동일한 파일을 링크 한다. SHA-1 해시 파일이나 디렉토리 저장시에 파일의 내용과 디렉토리 구조를 기반으로 40자의 SHA-1 해시값으로 저장하고 이를 이름으로 사용한다. 체크섬 데이터를 저장하기 전에 체크섬을 구하고 이 체크섬을 통해 데이터를 관리한다. 파일의 이름이 변경되더라도 내용이 변경되지 않으면 checksum 결과 해시 SHA-1 은 동일하게 나오기 때문에 그래서 Gi..