[2장]Git 기초 - 저장소 만들기

본 실습은 Windows 10 에서 Git을 설치하고난 후 같이 설치된 Git Bash CMD를 이용해 연습합니다.

이 부분까지는 매번 Sourcetree를 이용해 처리하던 부분이라 쉽게 진행되었다. 그 이후가 문제지...😁

Git 저장소 만들기

기존 디렉토리를 Git 저장소로 만들기

프로젝트 디렉토리로 이동(기존에 있던 어떠한 디렉토리라도 상관 없음)

$ cd /d/Projects/TIL/

Git 명령어 실행

git init
Initialized empty Git repository in D:/Projects/TIL/.git/

MINGW64 /d/Projects/TIL **(master)

$ ls -al
total 12601
drwxr-xr-x 1 user 197609        0  3월  7 09:08 ./
drwxr-xr-x 1 user 197609        0  3월  6 09:37 ../
drwxr-xr-x 1 user 197609        0  3월  7 09:09 .git/ # <- 이 부분이 새로 생성되었음**

워킹 디렉토리 내부에 숨김 디렉토리로 .git 디렉토리 가 생성됨. 또한 CMD 창에 (master) 라는 부분이 생김

  • .git 디렉토리에는 저장소에 필요한 뼈대 파일(Skeleton)이 들어 있다.
  • 현재 git init 명령만으로는 아직 프로젝트의 어떤 파일도 관리하지 않는 상태이다.

Git이 파일을 관리하게 하려면 저장소에 파일을 추가(git add)하고 커밋(git commit)해야 한다.

예제 2-1. README.md 라는 파일을 만들고 커밋해보자.

# 탐색기를 이용해 워킹 디렉토리로 이동 후 임시로 README.md 파일을 만들고 아무 내용이나 입력.
# 본인은 vi README.md 명령어를 이용해 파일을 생성했음
vi README.md

# vi README.md
테스트 파일 입니다.

$ git add README.md
warning: LF will be replaced by CRLF in README.md.
The file will have its original line endings in your working directory

$ git commit -m 'initial project version'
[master (root-commit) 87dc548] initial project version
 1 file changed, 1 insertion(+)
 create mode 100644 README.md

이제 우리는 명령어 몇 개로 순식간에 Git 저장소를 만들고 파일 버전 관리(VCS)를 시작했다.

참고로 git commit 할 때 메시지를 넣기위해 -m 이라는 옵션을 사용했다.

기존 저장소를 Clone 하기

다른 프로젝트에 참여하려거나(Contribute), Git 저장소를 복사하고 싶을 때 git clone 명령을 사용한다. (기존 VCS 시스템의 checkout 에 해당한다고 함)

앞에서도 이야기 했듯이 Git이 기존 Subversion 과 다른 가장 큰 차이점은 서버에 있는 거의 모든 데이터를 복사 한다는 것이다.

**git clone 을 실행하면 프로젝트 히스토리를 전부 받아온다.** 실제로 서버의 디스크가 망가져도 클라이언트 저장소 중에서 아무거나 하나 가져다가 복구하면 된다. (서버에만 적용했던 설정은 복구하지 못하지만 모든 데이터는 복구된다.)

git clone [url] 명령으로 깃헙에 있는 다른 프로젝트를 복사해보자.

예제 2-2. 깃헙에 있는 libgit2 라는 라이브러리 소스코드를 clone 해 보기

cd ../
$ git clone https://github.com/libgit2/libgit2
Cloning into 'libgit2'...
remote: Enumerating objects: 98656, done.
remote: Counting objects: 100% (98656/98656), done.
remote: Compressing objects: 100% (26646/26646), done.
remote: Total 98656 (delta 70303), reused 98594 (delta 70248), pack-reused 0
Receiving objects: 100% (98656/98656), 49.76 MiB | 13.35 MiB/s, done.
Resolving deltas: 100% (70303/70303), done.
Updating files: 100% (10336/10336), done.

위 명령은

  1. libgit2 라는 디렉토리를 생성하고, 그 안에 .git 디렉토리를 만든다.
  2. 이미 있던 기존 저장소의 데이터를 모두 가져와 자동으로 가장 최신 버전을 Checkout 해 놓는다.
  3. libgit2 디렉토리로 이동하면 Checkout 으로 생성한 파일을 볼 수 있고, 당장 하고자 하는 일을 시작할 수 있다.

libgit2 디렉토리가 아닌 내가 원하는 디렉토리 명으로 clone 하고 싶다면 명령어 제일 뒤에 내가 원하는 디렉토리 이름을 붙여주면 된다.

예제 2-3. mylibgit 이라는 디렉토리를 생성하고 clone 하기

$ git clone https://github.com/libgit2/libgit2 mylibgit

Git은 다양한 프로토콜을 지원한다.
https:// 프로토콜, git:// 프로토콜 그리고 user@server:path/to/repo.git 처럼 SSH 프로토콜을 사용할 수도 있다.

요약

저장소 생성

git init
git clone [저장소 주소] {[만들려는 디렉토리 명]}

파일 추가하기

git add 파일명

파일 커밋하기

git commit -m '커밋 메시지'

+ Recent posts