첫 번째 저장소


보통 두 가지 경우 중 하나로 여기에 도달합니다. 이미 로컬에서 구축 중인 weather-app 같은 프로젝트 폴더가 있어서 Git이 그 히스토리를 기록하기를 원하거나, 또는 다른 사람이 이미 프로젝트를 만들어서 GitHub에 있고 당신이 자신의 머신에서 작업 사본을 원하는 경우입니다. 둘 다 세 가지 작은 명령으로 시작하며, 이 장이 끝날 때쯤 세 명령 모두를 실제로 사용해 봤을 것입니다. 하지만 먼저 10초 정도 걸리는 확인 작업이 있습니다. 당신의 머신에 Git이 설치되어 있는지 확인하는 것입니다.
Git이 설치되어 있나요?
이 핸드북의 모든 것은 터미널에서 일어나므로, 먼저 터미널을 열어야 합니다. **터미널**은 텍스트로 명령을 입력하고 프로그램이 텍스트로 응답하는 앱입니다. 이미 당신의 컴퓨터에 있습니다:
- macOS: 앱 이름은 Terminal입니다. Cmd+Space를 누르고 "terminal"을 입력한 후 Enter를 누르세요.
- Windows: 지금은 PowerShell을 열어주세요 (시작 메뉴에서 "powershell"을 검색하세요). 아래에서 Git을 설치하면 Git Bash도 추가되는데, 이것은 이 작업을 위해 특별히 만들어진 터미널이며, 둘 다 동일한 Git 명령을 실행합니다.
- Linux: Terminal 또는 Console이라는 이름의 앱을 찾으세요. 많은 배포판에서 Ctrl+Alt+T가 이를 엽니다.
Git 자체는 명령줄 프로그램입니다. 자신의 창이 없으며 git이라는 단어로 시작하는 명령을 입력하고 출력을 읽음으로써 사용합니다. 이 핸드북의 모든 코드 블록도 같은 방식으로 읽습니다. $로 시작하는 줄은 입력하는 명령($ 자체는 제외)이고, 아래의 줄들은 Git의 응답입니다.
확인해 봅시다. 터미널에 다음을 입력하고 Enter를 누르세요:
$ git --version
git version 2.45.1버전 번호가 반환되면 Git이 설치되어 있고 준비가 완료된 것입니다. 당신의 번호는 이것과 다를 가능성이 높으며, 그것은 괜찮습니다. 대신 "command not found" 또는 "git is not recognized"를 보면 Git이 아직 설치되지 않았으며, 설치는 일회성 작업입니다:
- macOS:
git --version을 실행하면 보통 Apple의 Command Line Tools 설치를 제시하는 대화상자가 나타납니다. 수락하면 macOS가 Git을 설치해줍니다. - Windows: git-scm.com/downloads에서 Git for Windows를 다운로드하고 설치 프로그램을 실행하세요. 기본값은 모두 합리적인 선택이며, Git Bash도 함께 설치됩니다.
- Linux: 배포판의 패키지 관리자로
git패키지를 설치하세요. 예를 들어 Ubuntu와 Debian에서는sudo apt install git입니다.
설치가 완료되면 터미널을 닫고 새로운 터미널을 열어서 git --version을 다시 실행하세요. 버전 번호가 나타나면 설정은 완료되었으며, 이 핸드북의 나머지 부분에서는 설치할 것이 없습니다.
git --version은 당신의 머신에 설치되어 있는지 알려줍니다. 버전 번호는 준비가 완료되었다는 의미이고 "command not found"는 git-scm.com이나 시스템 설치 프로그램에서 설치해야 한다는 의미입니다. 이 부분은 한 번만 수행합니다. 설정은 모든 핸드북에서 가장 재미없는 부분이므로, 잘 해냈습니다! 폴더를 저장소로 변환하기
터미널을 열고 cd를 사용해 프로젝트 폴더로 이동한 후 (cd는 "change directory"의 줄임말), 한 가지 명령 git init을 실행하세요:
$ cd weather-app
$ git init
Initialized empty Git repository in /Users/mara/projects/weather-app/.git/이 폴더는 이제 **저장소**입니다. Git이 감시하는 프로젝트로, 작업하면서 그 스냅샷을 기록할 준비가 되어 있습니다. git init은 매번 같은 작업을 수행합니다. 숨겨진 .git 폴더를 찾고, 없으면 만들고, 그 시점부터 폴더는 Git의 감시 대상이 됩니다.
새 저장소의 기본 브랜치는 main이라고 합니다. 오래된 튜토리얼, 오래된 저장소, 또는 몇 년 전에 기록된 코스에서 정확히 같은 것에 대해 master를 사용한 것을 볼 수 있습니다. 이것은 오래된 이름으로 같은 첫 브랜치입니다. 이 핸드북은 항상 main을 사용합니다.
브랜치란 무엇인가요?
브랜치는 당신의 커밋이 착륙할 별도의 히스토리 라인이며, main은 모든 새 저장소가 시작하는 것입니다. Branches는 이들을 생성하고 전환하는 것을 다룹니다.
git init은 모든 폴더를 Git 저장소로 변환하여 Git이 추적을 시작할 준비를 합니다. 프로젝트 폴더 내부에서 한 번 실행하면 설정이 완료되며, 나중에 다시 실행해도 해롭지 않습니다. 새 저장소의 기본 브랜치는 main이라고 하지만, 외부에서 찾은 오래된 것들은 종종 같은 의미로 master라고 불립니다. Git에 당신이 누구인지 알려주기
첫 번째 커밋 전에 Git은 누가 만드는지 알고 싶어합니다. 두 가지 값을 한 번 설정하면 Git은 이 머신에서 만드는 모든 커밋에 대해 이를 기억합니다:
$ git config --global user.name "마라 첸"
$ git config --global user.email "[email protected]"만드는 모든 커밋에 그 이름과 이메일이 스탬프됩니다. 이 단계를 건너뛰면 Git은 컴퓨터의 사용자 이름과 호스트 이름에서 추측한 것으로 대체되므로, 당신의 커밋은 당신이 선택하지 않은 신원을 갖습니다.
첫 번째 커밋 전에 이름과 이메일을 설정하세요. 먼저 커밋하고 나중에 설정하면, 실수가 그 커밋의 히스토리에 구워집니다. 더 나쁜 것은 GitHub를 포함한 일부 호스트가 이메일로 커밋을 당신의 계정과 일치시키므로, 잘못된 주소나 추측된 주소로 만든 커밋이 당신의 것이 아니라 익명의 낯선 사람의 작업으로 표시된다는 것입니다.
git config --global user.name과 git config --global user.email은 Git이 당신이 만드는 모든 커밋에 스탬프하는 이름과 이메일을 설정합니다. 첫 번째 커밋 전에 설정하세요. 이메일을 설정하기 전에 만든 커밋은 추측된 신원으로 귀속되며, GitHub 같은 호스트가 이를 당신의 계정에 연결할 수 없을 수도 있습니다. 한 번 수행하면 머신의 모든 저장소가 이를 기억합니다. git clone으로 기존 프로젝트 복사하기
때때로 프로젝트가 이미 다른 곳에 존재하고, 당신이 머신에서 작업 복사본을 원합니다. git clone이 한 명령으로 이를 수행합니다:
$ git clone https://github.com/octocat/Hello-World.git
Cloning into 'Hello-World'...
remote: Enumerating objects: 13, done.
remote: Total 13 (delta 0), reused 0 (delta 0), pack-reused 13
Receiving objects: 100% (13/13), done.Git은 Hello-World라는 이름의 새 폴더를 만들고, 프로젝트의 전체 히스토리를 다운로드하고, 폴더에 파일을 배치하여 즉시 읽거나 편집을 시작할 수 있습니다. 별도의 git init 단계는 필요하지 않습니다. 복제는 다운로드의 일부로 저장소를 설정해줍니다.
git clone <url>은 누군가의 저장소를 전체 히스토리 포함해 프로젝트의 이름을 따서 만든 새 폴더로 다운로드합니다. 프로젝트가 이미 어디에나 존재할 때 이를 사용하세요. 처음부터 하나를 시작할 때 git init을 사용하세요. 복제가 완료되면 전체 작업 복사본이 있어서 살펴보거나 추가하기 위해 준비가 됩니다. 숨겨진 .git 폴더 내부는 무엇인가요
git init 또는 git clone으로 도달했는지 여부에 관계없이 모든 저장소에는 루트에 .git이라는 숨겨진 폴더가 있습니다. 기본적으로 숨겨져 있으므로 터미널에 ls -a를 입력하여 전체 목록을 요청하세요 (ls는 폴더의 내용을 나열하고, -a는 숨겨진 항목을 포함합니다). 일반 프로젝트 파일과 함께 있을 수 있습니다:
$ ls -a
. .. .git README.md src그 폴더가 실제 저장소입니다. 이는 만든 모든 커밋, 브랜치, 위 섹션의 구성 설정을 유지합니다. .git 폴더를 삭제하면 프로젝트는 전체 히스토리를 잃습니다. 이것은 Git이 더 이상 추적하지 않는 일반 폴더로 되돌아갑니다. 프로젝트의 다른 모든 것은 .git이 유지하는 것의 작업 복사본입니다.
.git 폴더가 있으며, 그 폴더가 실제 저장소입니다. 전체 히스토리와 설정이 거기에 있습니다. 기본적으로 숨겨져 있으므로 프로젝트 내부에서 ls -a를 실행하여 보세요. 프로젝트의 전체 히스토리를 삭제하고 싶지 않으면 절대 삭제하지 마세요. 삭제하면 폴더가 Git이 더 이상 추적하지 않는 평범한 폴더로 변환됩니다. 저장소와 커밋 용어가 여전히 모호하다면, Git이란 무엇입니까는 이 명령이 구축하는 정신 모델을 다루며, 용어집은 이 장의 모든 어휘 조각에 대한 짧은 정의를 제공합니다. 당신의 신원이 설정되고 작업할 저장소가 있으면, 커밋 루프는 당신이 이제부터 지속적으로 사용할 편집, 스테이징, 커밋의 일상 주기를 다룹니다.

