페이지 트리

Git은 새로운 저장소 생성과 기존 저장소 복제를 제공합니다.


저장소 란?

Git 저장소는 프로젝트의 가상 저장소입니다. 필요한 경우 액세스 할 수있는 코드 버전을 저장할 수 있습니다.

새로운 저장소 생성하기: git init

새 저장소를 만들려면 git init 명령을 사용합니다. git init은 새로운 repo의 초기 설정 중에 사용하는 일회성 명령입니다. 이 명령을 실행하면 현재 작업 디렉토리에 새 .git 하위 디렉토리가 만들어집니다. 그러면 새로운 마스터 브랜치가 작성됩니다.

Versioning an existing project with a new git repository

이 예에서는 기존에 프로젝트 폴더를 만들었으며 프로젝트 내에 repo를 만들려한다고 가정합니다. 먼저 루트 프로젝트 폴더로 이동 한 다음 git init 명령을 실행합니다.

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

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

git init <project directory>

기존 저장소 복제하기: git clone

프로젝트가 중앙 저장소에 이미 설정된 경우 clone 명령은 사용자가 로컬 개발 복제본을 얻는 가장 일반적인 방법입니다. git init과 마찬가지로, 복제는 일반적으로 일회성 작업입니다. 개발자가 작업 복사본을 얻으면 모든 버전 제어 작업은 로컬 저장소를 통해 관리됩니다.

git clone <repo url>

git clone은 원격 리포지토리의 복사본이나 복제본을 만드는 데 사용됩니다. git clone에 저장소 URL을 전달합니다. Git은 몇 가지 다른 네트워크 프로토콜과 해당 URL 형식을 지원합니다. 

HTTP 프로토콜를 지원하는 Bitbucket 저장소 URL 형식 예:

https://user@bitbucket.almdemo.curvc.com/scm/gt/spring3example.git

실행되면 마스터 브랜치의 원격 repo 파일의 최신 버전이 풀다운되어 새 폴더에 추가됩니다. 새 폴더의 이름은이 경우 javascript-data-store의 REPONAME 다음에 지정됩니다. 이 폴더는 원격 저장소와 새로 생성 된 master 브랜치의 전체 히스토리를 포함합니다.

저장소에 변경사항 저장하기: git add and git commit

저장소가 설정되면 이제 저장소를 복제하거나 초기화 했으므로 파일 버전 변경을 커밋 할 수 있습니다. 다음 예제에서는 / path / to / project에 프로젝트를 설정했다고 가정합니다. 이 예제에서 수행되는 단계는 다음과 같습니다.

  • 디렉토리를 / path / to / project로 변경합니다.
  • 내용이 담긴 CommitTest.txt 파일을 만듭니다 ~ "git tutorial for test content"~
  • git은 CommitTest.txt를 저장소 스테이징 영역에 추가합니다.
  • 커밋에서 수행 된 작업을 설명하는 메시지로 "CommitTest.txt 파일 추가" 지정
cd /path/to/project 
echo "test content for git tutorial" >> CommitTest.txt 
git add CommitTest.txt 
git commit -m "CommitTest.txt 파일 추가"

이 예를 실행하면 Repo에 기록에 CommitTest.txt가 추가되고 파일의 향후 업데이트를 추적합니다.

이 예제는 두 개의 추가적인 git 명령 인 add와 commit를 소개했다. 이것은 매우 제한된 예 였지만, 두 명령 모두 git add 및 git commit 페이지에서 자세히 다루어집니다. git add의 또 다른 일반적인 사용 예는 --all 옵션입니다. git add --all을 실행하면 repo에서 변경되거나 추적되지 않은 파일을 가져 와서 repo에 추가하고 repo의 작업 트리를 업데이트합니다.

저장소 간 협업: git push

Git의 "작업 카피"에 대한 아이디어가 SVN 저장소에서 소스 코드를 체크 아웃하여 얻은 작업 카피와 매우 다르다는 것을 이해하는 것이 중요합니다. SVN과 달리 Git은 작업 사본과 중앙 저장소를 구분하지 않습니다. 그들은 모두 본격적인 Git 저장소입니다.

이것은 Git과 SVN과 근본적으로 다른 협력을 만든다. SVN이 중앙 저장소와 작업 사본 사이의 관계에 의존하는 반면, Git의 공동 작업 모델은 저장소와 저장소 간의 상호 작용을 기반으로합니다. 작업 복사본을 SVN의 중앙 저장소로 검사하는 대신 한 저장소에서 다른 저장소로 커밋을 푸시하거나 끌어 당깁니다.

물론, Git repos라는 특별한 의미를주는 것을 막을 수있는 방법은 없습니다. 예를 들어 Git repo를 "중앙"저장소로 지정하면 Git을 사용하여 중앙 집중식 워크 플로를 복제 할 수 있습니다. 이는 VCS 자체에 내장되어 있지 않고 규칙을 통해 수행됩니다.

Bare vs. cloned repositories

이전의 "새 저장소 초기화"절에서 git clone을 사용하여 로컬 저장소를 설정 한 경우 저장소는 원격 협업을 위해 이미 구성되어 있습니다. git clone은 복제 한 Git URL을 가리키는 리모컨으로 자동으로 저장소를 구성합니다. 즉, 파일을 변경하고 커밋하면 원격 저장소에 변경 사항을 적용 할 수 있습니다.

git init을 사용하여 새로운 repo를 작성했다면 변경 사항을 푸시 할 원격 저장소가 없습니다. 새로운 repo를 초기화 할 때 일반적인 패턴은 Bitbucket과 같은 호스팅 된 Git 서비스로 가서 repo를 생성하는 것입니다. 이 서비스는 Git URL을 제공하여 로컬 Git 저장소에 추가하고 호스트 된 저장소로 Push 할 수 있습니다. 선택한 서비스로 원격 저장소를 만든 후에는 매핑을 사용하여 로컬 저장소를 업데이트해야합니다. 이 프로세스는 아래의 구성 및 설정 안내서에서 설명합니다.

자신의 원격 저장소를 호스팅하려면 "기본 저장소"를 설정해야합니다. git init과 git clone 모두 --bare 인수를 허용합니다. 베어 레포의 가장 일반적인 사용 사례는 원격 중앙 저장소를 만드는 것입니다.

설정: git config

원격 저장소 설정이 끝나면 로컬 저장소에 원격 저장소 URL을 추가하고 로컬 분기에 대한 업스트림 브랜치를 설정해야합니다. git remote 명령은 그러한 유틸리티를 제공합니다.

git remote add <remote_name> <remote_repo_url>

이 명령은 <remote_repo_url>의 원격 저장소를 <remote_name>의 로컬 저장소에있는 참조로 매핑합니다. 원격 저장소를 매핑하면 로컬 저장소를 해당 저장소로 푸시 할 수 있습니다.

git push -u <remote_name> <local_branch_name>

이 명령은 <local_branc_name> 아래의 로컬 repo 분기를 <remote_name>의 원격 저장소로 푸시합니다.

git remote에 대한 자세한 내용은 Git 원격 페이지를 참조하십시오.

원격 repo URL을 설정하는 것 외에도 username 또는 email과 같은 글로벌 Git 구성 옵션을 설정해야 할 수도 있습니다. git config 명령을 사용하여 명령 행에서 Git 설치 (또는 개별 저장소)를 구성 할 수 있습니다. 이 명령은 사용자 정보에서 환경 설정, 저장소 작동에 이르기까지 모든 것을 정의 할 수 있습니다. 몇 가지 일반적인 구성 옵션은 다음과 같습니다.

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

  • 로컬 : <repo> /. git / config - 저장소 별 설정.
  • 전역 : /.gitconfig - 사용자 별 설정. 여기에는 --global 플래그로 설정된 옵션이 저장됩니다.
  • 시스템 : $ (접두사) / 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 페이지를 참조하십시오.

git config --system core.editor <editor>

현재 컴퓨터의 모든 사용자에 대해 git commit과 같은 명령이 사용하는 텍스트 편집기를 정의하십시오. <editor> 인수는 원하는 편집기 (예 : vi)를 시작하는 명령이어야합니다. 이 예제는 --system 옵션을 소개합니다. --system 옵션은 전체 시스템의 구성을 설정합니다. 즉, 모든 사용자와 시스템의 repos를 의미합니다. 구성 수준에 대한 자세한 내용은 git config 페이지를 참조하십시오.

git config --global --edit

수동 편집을 위해 텍스트 편집기에서 글로벌 구성 파일을 엽니 다. git이 사용할 텍스트 편집기를 구성하는 방법에 대한 자세한 안내는 Git config 페이지에서 찾을 수 있습니다.

Git은 구성 옵션을 세 개의 개별 파일에 저장하므로 개별 저장소, 사용자 또는 전체 시스템에 대한 옵션을 범위 지정할 수 있습니다.

  • <repo> /. git / config - 저장소 별 설정.
  • ~ / .gitconfig - 사용자 별 설정. 여기에는 --global 플래그로 설정된 옵션이 저장됩니다.
  • $ (접두사) / 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와 동일한 효과로 편집 할 수 있습니다.

  • 레이블 없음