Close

리포지토리 설정

이 튜토리얼은 Git 버전 제어에서 리포지토리를 설정하는 방법에 대한 개요를 제공합니다. 이 리소스를 통해 신규 또는 기존 프로젝트의 Git 리포지토리를 초기화하는 과정을 살펴볼 수 있습니다. 아래에는 로컬로 생성된 리포지토리와 원격 리포지토리에서 복제된 리포지토리에 대한 워크플로 예가 모두 포함되어 있습니다. 이 가이드는 명령줄 인터페이스의 기본 사항에 익숙한 것으로 가정하고 진행합니다.

이 가이드에서 다루는 높은 수준의 요점은 다음과 같습니다.

  • 새 Git 리포지토리 초기화
  • 기존 Git 리포지토리 복제
  • 수정된 파일 버전을 리포지토리로 커밋
  • 원격 협업을 위한 Git 리포지토리 구성
  • 일반 Git 버전 제어 명령

이 모듈을 마치면 Git 리포지토리를 생성하고, 일반 Git 명령을 사용하며, 수정된 파일을 커밋하고, 프로젝트의 기록을 보고 Git 호스팅 서비스(Bitbucket)에 대한 연결을 구성할 수 있습니다.


Git 리포지토리란 무엇인가요?


Git 리포지토리는 프로젝트의 가상 스토리지입니다. 이를 통해 필요할 때 액세스할 수 있는 코드 버전을 저장할 수 있습니다.

새 리포지토리 초기화: git init


새 리포지토리를 만들려면 git init 명령을 사용합니다. git init은 새 리포지토리의 초기 설정 동안 사용하는 일회성 명령입니다. 이 명령을 실행하면 현재 작업 디렉터리에 새 .git 하위 디렉터리가 만들어집니다. 또한 새 main 브랜치도 만들어집니다.

새 git 리포지토리로 기존의 프로젝트 버전 관리

이 예는 사용자에게 리포지토리를 생성하려는 기존 프로젝트 폴더가 이미 있다고 가정합니다. 먼저 루트 프로젝트 폴더로 cd한 다음 git init 명령을 실행합니다.

Git 브랜치
관련 자료

Git 브랜치

Bitbucket 로고
솔루션 보기

Bitbucket Cloud에서 Git에 대해 알아보기

cd /path/to/your/existing/code 
git init

git init가 기본 프로젝트 디렉터리를 가리키면 위에서 언급한 것과 동일한 초기화 설정이 실행되지만 해당 프로젝트 디렉터리가 범위로 지정됩니다.

git init <project directory>

git init 페이지에서 git init에 대한 자세한 리소스를 참조하십시오.

기존 리포지토리 복제: git clone


중앙 리포지토리에서 프로젝트가 이미 설정된 경우 사용자가 로컬 개발 복제를 수행하는 가장 일반적인 방법은 복제 명령입니다. git init와 같이 복제는 일반적으로 일회성 작업입니다. 개발자가 작업 복사본을 받으면 모든 버전 제어 작업이 로컬 리포지토리를 통해 관리됩니다.

git clone <repo url>

git 복제는 원격 리포지토리의 복사본 또는 복제본을 생성하는 데 사용됩니다. git 복제를 리포지토리에 전달합니다. Git은 몇 가지 서로 다른 네트워크 프로토콜 및 해당 URL 형식을 지원합니다. 이 예에서는 Git SSH 프로토콜을 사용합니다. Git SSH URL은 git@HOSTNAME:USERNAME/REPONAME.git의 템플릿을 따릅니다.

Git SSH URL 예: git@bitbucket.org:rhyolight/javascript-data-store.git 여기에서 템플릿 값은 일치합니다.

  • 호스트 이름: bitbucket.org
  • 사용자 이름: rhyolight
  • 리포지토리 이름: javascript-data-stored

실행하면 main 브랜치에서 최신 버전의 원격 리포지토리 파일이 풀다운되어 새 폴더에 추가됩니다. 이러한 경우 새 폴더는 javascript-data-store의 REPONAME에 따라 이름이 지정됩니다. 폴더에는 원격 리포지토리의 전체 기록과 새로 만들어진 main 브랜치가 포함됩니다.

git clone 사용 및 지원되는 Git URL 형식에 대한 자세한 내용은 git clone 페이지를 참조하십시오.

리포지토리에 변경 사항 저장: git add 및 git commit


이제 리포지토리가 복제 또는 초기화되었으며 파일 버전 변경 사항을 커밋할 수 있습니다. 다음 예는 /path/to/project에서 프로젝트를 설정했다고 가정합니다. 이 예에서 수행되는 단계는 다음과 같습니다.

  • 디렉터리를 /path/to/project로 변경합니다.
  • 새 파일 CommitTest.txt를 컨텐츠 ~"test content for git tutorial"-로 생성
  • CommitTest.txt를 리포지토리 스테이징 영역에 git 추가
  • 커밋에서 완료된 작업에 대해 설명하는 메시지로 새 커밋 생성
cd /path/to/project 
echo "test content for git tutorial" >> CommitTest.txt 
git add CommitTest.txt 
git commit -m "added CommitTest.txt to the repo"

이 예를 실행하고 나면 리포지토리에 이제 CommitTest.txt가 히스토리에 추가되며 파일의 향후 업데이트를 추적합니다.

이 예는 두 개의 추가 git 명령인 추가커밋을 . 이는 매우 제한된 예이지만 두 명령 모두 git 추가git 커밋 페이지에서 더욱 상세히 다루고 있습니다. git 추가에 대한 또다른 일반적인 사용 사례는 --all 옵션입니다. git 추가 --all 실행은 리포지토리에서 변경되고 추적되지 않은 파일을 가져오고 리포지토리에 추가하며 리포지토리의 작업 트리를 업데이트합니다.

리포지토리 간 협업: git 푸시


"작업 복사본"에 대한 Git의 아이디어는 SVN 리포지토리의 소스 코드를 확인하여 얻는 작업 복사본과 매우 다르다는 점을 이해하는 것이 중요합니다. SVN과는 달리 Git은 작업 복사본과 중앙 리포지토리 간에 구별을 하지 않습니다.—모두 완전한 Git 리포지토리입니다.

따라서 Git와 협업은 SVN과는 근본적으로 다른 방식으로 진행됩니다. SVN은 중앙 리포지토리와 작업 복사본 간의 관계에 따라 달라지지만 Git의 협업 모델은 리포지토리 간 상호 작용을 기반으로 합니다. SVN의 중앙 리포지토리에 대한 작업 복사본을 확인하는 대신 하나의 리포지토리에서 다른 리포지토리로 커밋을 푸시하거나 풀링합니다.

물론 특정 Git 리포지토리에 특별한 의미를 부여하는 것을 막을 수 없습니다. 예를 들어 한 Git 리포지토리를 “중앙” 리포지토리로 지정하여 Git를 사용하는 중앙 집중식 워크플로를 복제할 수 있습니다. 이는 VCS 자체에 내장되어 있지 않으며 규칙을 통해 수행됩니다.

베어 대 복제 리포지토리

이전 "새 리포지토리 초기화" 섹션에서 로컬 리포지토리를 설정하기 위해 git clone을 사용한 경우 리포지토리가 이미 원격 협업에 맞게 구성되어 있습니다. git clone은 복제한 Git URL을 원격으로 가리켜 리포지토리를 자동으로 구성합니다. 이는 파일을 변경하고 커밋한 경우 원격 리포지토리에 이러한 변경 사항을 git push할 수 있음을 의미합니다.

새 리포지토리를 만들기 위해 git init를 사용했다면 변경 사항을 푸시할 원격 리포지토리가 없습니다. 새 리포지토리를 초기화할 때의 일반적인 패턴은 Bitbucket과 같은 호스팅한 Git 서비스로 이동하여 리포지토리를 생성하는 것입니다. 서비스는 로컬 Git 리포지토리에 추가하고 호스팅한 리포지토리에 git push할 수 있는 Git URL을 제공합니다. 선택한 서비스로 원격 리포지토리를 생성했으면 매핑으로 로컬 리포지토리를 업데이트해야 합니다. 이 과정은 아래 구성 및 설정 가이드에서 다루도록 하겠습니다.

자체 원격 리포지토리 호스트를 선호하는 경우 "Bare 리포지토리"를 설정해야 합니다. git initgit 복제--bare 인수를 허용합니다. bare 리포지토리의 가장 일반적인 사용 사례는 원격 중앙 Git 리포지토리를 생성하는 것입니다.

구성 및 설정: git config


원격 리포지토리 설정을 완료하면 원격 리포지토리 URL을 로컬 git config에 추가하고 로컬 브랜치에 대한 업스트림 브랜치를 설정해야 합니다. git remote 명령이 이러한 유틸리티를 제공합니다.

git remote add <remote_name> <remote_repo_url>

이 명령은 <remote_repo_url>의 원격 리포지토리를 <remote_name>에서 로컬 리포지토리의 참조로 매핑합니다. 원격 리포지토리를 매핑했으면 로컬 브랜치를 푸시할 수 있습니다.

git push -u <remote_name> <local_branch_name>

이 명령은 < local_branch_name >에서 로컬 리포지토리 브랜치를 < remote_name >의 원격 리포지토리로 푸시합니다.

git 원격에 대한 상세한 보기는 Git 원격 페이지를 확인하십시오.

원격 리포지토리 URL을 구성하는 것 외에 사용자 이름이나 이메일과 같은 글로벌 Git 구성 옵션도 설정해야 할 수 있습니다. git config 명령을 사용하여 명령줄에서 Git 설치(또는 개별 리포지토리)를 구성할 수 있습니다. 이 명령은 사용자 정보에 있는 모든 항목을 기본 설정, 리포지토리의 동작으로 정의할 수 있습니다. 몇 가지 기본 구성 옵션이 아래에 나열되어 있습니다.

Git는 개별 리포지토리(로컬), 사용자(글로벌) 또는 전체 시스템(시스템)에 범위 옵션을 제공하는 3개의 개별 파일에 구성 옵션을 저장합니다.

  • 로컬: /.git/config – 리포지토리별 설정.
  • 글로벌: /.gitconfig – 사용자별 설정. --global 플래그로 설정한 옵션이 저장되는 위치입니다.
  • 시스템: $(prefix)/etc/gitconfig – 시스템 전반 설정.

현재 리포지토리에 있는 모든 커밋에 사용할 작성자 이름을 정의합니다. 보통은 --global 플래그를 사용하여 현재 사용자의 구성 옵션을 설정하는 것이 좋습니다.

git config --global user.name <name>

현재 사용자가 모든 커밋에 사용할 작성자 이름을 정의합니다.

--local 옵션을 추가하거나 구성 수준 옵션을 전혀 전달하지 않으면 현재 로컬 리포지토리에 대한 user.name이 설정됩니다.

git config --local user.email <email>

현재 사용자가 모든 커밋에 사용할 작성자 이메일을 정의합니다.

git config --global alias.<alias-name> <git-command>

Git 명령에 대한 바로 가기를 생성합니다. 이는 일반적으로 사용되는 git 명령에 대한 사용자 지정 바로 가기를 생성할 수 있는 강력한 유틸리티입니다. 단순한 예는 다음과 같습니다.

git config --global alias.ci commit

이렇게 git commit에 대한 바로 가기로 실행할 수 있는 ci 명령이 만들어집니다. git 별칭에 대한 자세한 내용은 git config 페이지를 참조하세요.

it config --system core.editor <editor>

현재 시스템의 모든 사용자에 대한 git 커밋 등의 명령으로 사용되는 텍스트 에디터를 정의합니다. 인수는 원하는 에디터(예: vi)를 시작하는 명령이어야 합니다. 이 예는 --system 옵션을 소개합니다. --system 옵션은 전체 시스템에 대한 구성을 설정하며 이는 시스템에 있는 모든 사용자와 리포지토리를 의미합니다. 구성 수준에 대한 자세한 내용은 git 구성 페이지를 방문하십시오.

git config --global --edit

수동으로 편집하기 위해 텍스트 편집기에서 글로벌 구성 파일을 엽니다. git에 사용할 텍스트 편집기를 구성하는 방법에 대한 심층적인 가이드는 Git config 페이지에서 찾을 수 있습니다.

토론

모든 구성 옵션은 일반 텍스트 파일에 저장되므로 git 구성 명령은 정말 편리한 명령줄 인터페이스입니다. 일반적으로 새 개발 시스템에서의 작업을 처음 시작할 때 Git 설치만 구성해야 하며 가상으로 모든 경우에 --global 플래그를 사용합니다. 한 가지 중요한 예외 사항은 작성자 이메일 주소를 덮어쓰는 것입니다. 개인 및 오픈 소스 리포지토리에 대한 개인 이메일 주소와 작업 관련 리포지토리에 대한 회사 이메일 주소를 설정하려고 할 수 있습니다.

Git은 개별 리포지토리, 사용자 또는 전체 시스템에 범위 옵션을 제공하는 3개의 개별 파일에 구성 옵션을 저장합니다.

  • /.git/config – 리포지토리별 설정.
  • ~/.gitconfig – 사용자 특정 설정. --global 플래그로 설정한 옵션이 저장되는 위치입니다.
  • $(prefix)/etc/gitconfig – 시스템 전반 설정.

이러한 파일의 옵션이 충돌하면 로컬 설정은 사용자 설정을 재정의하여 시스템 전반 설정을 재정의합니다. 이 파일 중 하나를 열면 다음과 비슷하게 표시됩니다.

[user] name = John Smith email = john@example.com [alias] st = status co = checkout br = branch up = rebase ci = commit [core] editor = vim

이 값들을 수동으로 편집하여 git config와 동일한 효과를 얻을 수 있습니다.

Git을 설치한 후 가장 먼저 해야 할 일은 이름/이메일 정보를 제공하고 몇 가지 기본 설정을 사용자 지정하는 것입니다. 일반적인 초기 구성은 다음과 비슷하게 표시될 것입니다.

Tell Git who you are git config

git --global user.name "John Smith" git config --global user.email john@example.com

좋아하는 텍스트 에디터 선택

git config --global core.editor vim

SVN과 같은 일부 별칭 추가

git config --global alias.st status 
git config --global alias.co checkout 
git config --global alias.br branch 
git config --global alias.up rebase 
git config --global alias.ci commit

이전 섹션에서 ~ /.gitconfig 파일을 만듭니다. git config 페이지에서 git 구성을 더욱 자세하게 살펴봅니다.

요약


여기에서는 git initgit clone이라는 두 가지 방법을 사용하여 Git 리포지토리를 만드는 방법을 보여줍니다. 이 가이드는 소프트웨어 소스 코드를 관리하기 위해 적용하거나 버전을 지정해야 하는 다른 콘텐츠에 적용할 수 있습니다. git add, git commit, git pushgit remote는 높은 수준에 도입해 활용할 수도 있습니다.

팀에 적합한 코드 리포지토리 시스템에 대한 가이드를 확인해 보세요!


이 문서 공유
다음 토픽

여러분께 도움을 드릴 자료를 추천합니다.

이러한 리소스에 책갈피를 지정하여 DevOps 팀의 유형에 대해 알아보거나 Atlassian에서 DevOps에 대한 지속적인 업데이트를 확인하세요.

도구로 가득한 벽을 사용하여 협업하는 사람들

Bitbucket 블로그

DevOps 일러스트레이션

DevOps 학습 경로

Atlassian 전문가와 함께 하는 Demo Den 기능 데모

Bitbucket Cloud가 Atlassian Open DevOps와 작동하는 방법

DevOps 뉴스레터 신청

Thank you for signing up