Skip to content

Latest commit

 

History

History
135 lines (91 loc) · 4.09 KB

File metadata and controls

135 lines (91 loc) · 4.09 KB

저장소 생성과 클론

Git을 쓰다 보면 가장 먼저 마주치는 질문이 있다.

❓ “이 프로젝트, 어디서 시작하지?”
❓ “이미 있는 저장소는 어떻게 가져오지?”

이번 문서에서는
저장소를 직접 만드는 방법
외부 저장소를 불러오는 방법을 차근차근 살펴본다.


저장소를 만들고, 외부 저장소를 불러오는 법

git init이란?

git init현재 디렉토리를 Git 저장소로 초기화하는 명령어이다.
이 명령을 실행하면 해당 디렉토리는 Git의 버전 관리 대상이 되며,
이후 파일 변경 이력과 커밋을 기록할 수 있게 된다.

주로 새 프로젝트를 처음 시작할 때 사용된다.

📌 “아무것도 없는 폴더에 Git을 심는다”라고 생각하면 된다.


git clone이란?

git clone원격 저장소를 로컬 저장소로 그대로 복사하는 명령어이다.
프로젝트의 파일뿐 아니라 커밋 이력, 브랜치 구조까지 함께 가져오며,
이미 존재하는 GitHub 프로젝트에 참여할 때 사용된다.

원격 저장소 → 로컬 저장소

즉,
“이미 만들어진 프로젝트를 통째로 가져온다”는 개념이다.


fork란?

Fork는 다른 사용자의 원격 저장소를 자신의 GitHub 계정으로 복사하는 기능이다.
원본 저장소에 직접 수정 권한이 없을 때 사용되며,
복사된 저장소에서 자유롭게 작업한 후 변경 사항을 Pull Request로 제안할 수 있다.

주로

  • 오픈소스 프로젝트 기여
  • 권한이 없는 저장소에 대한 협업

에서 사용된다.

원격 저장소 → 원격 저장소

clone과 헷갈리기 쉬운데,
fork는 GitHub 상에서 저장소를 하나 더 만드는 작업이라는 점이 핵심이다.


git config란?

git configGit의 사용자 정보 및 동작 설정을 관리하는 명령어이다.
대표적으로 커밋 작성자를 식별하기 위한 사용자 이름과 이메일을 설정하며,
이 정보는 모든 커밋 기록에 포함된다.

즉,

“이 커밋, 누가 만들었는지”를 Git에게 알려주는 설정이다.


주요 명령어 (직접 써보자)

git init

alt text

git init

git init 명령어가 수행하는 것은 엄밀히 말하면 새로운 저장소를 생성하는 것이 아니다.

현재 디렉토리에 .git 디렉토리를 생성하여 Git이 변경 이력을 관리할 수 있도록 초기화하는 작업이다.

기존 파일이 있든 없든 상관없이, 해당 디렉토리는 즉시 Git의 버전 관리 대상이 된다.


git clone

alt text

git clone https://github.com/username/repository.git #<URL>.git

git clone을 통해 웹사이트에 존재하는 원격 저장소를 자신의 로컬 저장소로 그대로 복사하여 불러올 수 있다.

이때:

  • 파일
  • 커밋 이력
  • 브랜치 정보

모두 함께 복사된다.

fork

alt text fork를 통해 타인의 원격 저장소를 자신의 원격 저장소로 복사할 수 있다.

응용하면 다음과 같은 흐름이 가능하다.

  1. 타인의 저장소를 fork

  2. fork된 내 저장소를 로컬로 clone

  3. 수정 후 다시 내 원격 저장소에 push

  4. Pull Request를 통해 원본 저장소에 기여(contribute)

이것이 오픈소스 협업의 기본 흐름이다.


git config

git config --global user.name "YOUR_NAME"
git config --global user.email "YOUR_EMAIL"

이 설정은 커밋 작성자를 식별하기 위한 정보를 등록하는 것이다.

  • --global 옵션은 사용자 환경 단위로 적용된다.

  • 한 번 설정하면, 해당 사용자가 생성하거나 사용하는 모든 Git 저장소에 공통으로 적용된다. 따라서 최초 한 번만 설정하면 된다.

  • --local 옵션도 존재하지만, 저장소마다 따로 설정해야 하므로 기본 단계에서는 잘 사용하지 않는다.

👉 일단 지금은 --global만 알고 넘어가자 😊