Study Programming/Git

Git 저장소(Repository)만들기 (로컬에 새로 만들기, 원격 가져오기)

네모메모 2021. 7. 3. 14:43
반응형

 

 


 

일단 저장소(Repository) 란?  : 말그대로 파일이나 폴더를 저장해 두는 곳


그럼 Git 저장소 (= Git Repository)란?

:  'git이 관리하는 저장소'로 파일이 변경 이력 별로 구분되어 저장되며 다양한 git의 관리 기능이 지원된다.


Git Repository 종류 2가지

- Git은 원격 저장소와 로컬 저장소 두 종류의 저장소를 제공한다.

  (저장소는 꼭 두 종류 중 하나가 아니라 두 종류 다 일 수도 있을 것으로 보인다.)

1) 원격 저장소(Remote Repository)
     : 파일이 원격 저장소 전용 서버에서 관리되며 여러 사람이 함께 공유하기 위한 저장소
     (주로 "(내가 clone해 가져오는) 협업 플젝 원본의 저장소")

2) 로컬 저장소(Local Repository)
     : 내 PC에 파일이 저장되는 개인 전용 로컬의 git 저장소 (내 PC에 위치한 git 설정된 디렉토리)
     (내가 "git 저장소를 생성" 또는 "원격 저장소를 clone해 와 (수정할) 내 PC에 존재하는 git 저장소")

ㄴ> 평소에는 내 PC의 로컬 저장소에서 작업하다가 작업한 내용을 공개하고 싶을 때에 원격 저장소에 업로드 합니다. (로컬 -> 원격)
ㄴ> 원격 저장소에서 다른 사람이 작업한 파일을 로컬 저장소로 가져올 수도 있습니다. (원격 -> 로컬)

 


1. Git 저장소(Repository) 만들기

- (내 컴퓨터에) 저장소를 만드는 방법은 두 가지가 있습니다.
   #1-1. 아예 저장소를 새로 만들기

   #1-2. 이미 만들어져 있는 원격 저장소를 로컬 저장소로 복사해오기

 


#1-1. 새로 Git 저장소 만들기 (= 내 로컬 환경의 디렉토리를 Git 저장소로 만들기)

 

- 버전관리를 하지 아니하는 '로컬 기존 프로젝트'를 Git으로 관리하고 싶은 경우

- 이렇게 생성된 경우,  'git 저장소로 만들 내 PC의 로컬 디렉토리'가 로컬 저장소(Local Repository)이고,
   이를 원격에 올리면 원격 저장소(Remote Repository)가 된다.


- 과정 ▼)

1) git 저장소로 만들 로컬 디렉토리 경로로 이동            
   $ cd /c/user/my_project   

2) git init 명령을 실행      
   $ git init   
    ㄴ> 명령어 실행 시 해당 경로에  '.git' 이라는 하위 디렉토리가 만들어진다.
      '.git 디렉토리' : 저장소에 필요한 뼈대 파일(Skeleton)들을 포함한 디렉토리
    ㄴ> 이 명령만으로는 아직 프로젝트의 어떤 파일도 관리하지 않는다.

3) 이제 git이 파일을 관리하게 하려면,
    저장소에 파일을 추가(git add 명령)하고 커밋(git commit 명령)해야 한다.
    - $ git add 명령으로 파일을 추가
    - $ git commit 명령으로 커밋
    - ex) 
$ git add *.c
$ git add LICENSE
$ git commit -m 'initial project version'

 

4) 끝~!
    - 명령어 몇 개로 순식간에 Git 저장소를 만들고 파일 버전 관리를 시작했다.

 


 

#1-2. 기존 저장소를 Clone 하기 (= 다른 프로젝트 가져와 Git 저장소 만들기) : $git clone <url>

 

- 다른 프로젝트에 참여하려거나(Contribute) Git 저장소를 복사하고 싶은 경우

- 이렇게 생성된 경우,  'git 저장소로 만들 내 PC의 로컬 디렉토리'가 '로컬 저장소(Local Repository)'이고,
   <url>에 존재하는 원격
프로젝트'가 격 저장소(Remote Repository) 이다.


- 과정 ▼)

1) git 저장소로 만들 로컬 디렉토리 경로로 이동      
   $ cd /c/user/my_project  


2) git clone <url> 명령을 실행 
   $ git clone <url>

    ㄴ> <url> 경로 마지막 디렉토리명으로 로컬에 디렉토리 생성하고, 그 안에 `.git 디렉토리'와 
           
저장소의 데이터(clone 입력 시점 가장 최신 버전)를 모두 가져온다.
            ( = git의 'clone'을 해 놓는다. = snv의 'checkout'을 해 놓는다.)
    ㄴ> <url>의 지원 프로토콜 : https://, git://, SSH 등 다양한 프로토콜을 지원

   
    - 별도디렉토리에 clone하고 싶을 때 : $ git clone <url> <별도디렉토리명>
          ㄴ> <별도디렉토리명> 디렉토리 생성하고, 그 안에 위와 같이 저장소 checkout해서 가져온다.

 

- git의 clone 을 실행하면 "프로젝트"와 "히스토리"를 전부 받아온다. 

   ㄴ> ▲ Git이 Subversion과 다른 가장 큰 차이점이다. 서버에 있는 거의 모든 데이터를 복사한다는 것.

   ㄴ> 이 떄문에 실제로 서버의 디스크가 망가져도 클라이언트 저장소 중에서 아무거나 하나 가져다가 복구가능하다. :-)b

         + (서버에만 적용했던 설정은 복구하지 못하지만 모든 데이터는 복구된다)


- SVN 같은 VCS에 익숙한 사용자에게는 "checkout" 이 아니라 "clone" 이라는 점 주의

  - ※ 주의)  git과 svn 모두에서 "checkout"동작이 있으나 매우 다르다!!

  SVN Git
가지고 있지 않은 저장소를
원본(원격?)에서가져 오는 것
chekout clone
이미 가지고 있는 저장소를 
원본(원격?)의 최신버전으로 전환하는 것
update pull, fetch 등 다양
Git의 브랜치 전환 X checkout



 

 

END!


스터디 도움 참조 블로그 (References)

- 버전 관리(VC) 위키백과
https://ko.wikipedia.org/wiki/%EB%B2%84%EC%A0%84_%EA%B4%80%EB%A6%AC

- 누구나 쉽게 이해할 수 있는 Git 입문
https://backlog.com/git-tutorial/kr/

/입문편/Git의 기본/이력을 관리하는 저장소
https://backlog.com/git-tutorial/kr/intro/intro1_2.html

- git--distributed-even-if-your-workflow-isnt (Pro Git Book)
https://git-scm.com/book/en/v2

- git--distributed-even-if-your-workflow-isnt (Pro Git Book) / ch2.1
https://git-scm.com/book/ko/v2/Git%EC%9D%98-%EA%B8%B0%EC%B4%88-Git-%EC%A0%80%EC%9E%A5%EC%86%8C-%EB%A7%8C%EB%93%A4%EA%B8%B0

- What is the difference between git clone and checkout?
https://stackoverflow.com/a/7298621

- What is the difference between git checkout and git pull? - Quora
https://www.quora.com/What-is-the-difference-between-git-checkout-and-git-pull

 

반응형