GitGit 시작하기

비고

Git은 프로그래머가 현재 상태에서 "스냅 샷"(커밋)을 통해 코드 변경 사항을 추적 할 수있게 해주는 무료 분산 형 버전 제어 시스템입니다. 커밋을 사용하면 프로그래머는 새로운 기능을 공동으로 테스트, 디버그 및 작성할 수 있습니다. 모든 커밋은 컴퓨터, 개인 서버 또는 Github과 같은 오픈 소스 웹 사이트에서 호스팅 할 수있는 "Git Repository"로 유지됩니다.

힘내는 또한 사용자가 코드의 새로운 "브랜치 (branch)"를 만들 수있게 해준다. 이것은 하나의 브랜치가 가장 최근의 안정 버전을 포함하고, 다른 브랜치가 개발되는 새로운 피처 세트를 포함하고, 또 다른 브랜치가 상이한 피처 세트를 포함하는 시나리오를 가능하게한다. Git은 이러한 브랜치를 생성 한 다음 나중에 다시 병합하는 과정을 거의 거치지 않습니다.

힘내 당신의 코드에 대한 3 가지 "영역"이 있습니다 :

  • 작업 디렉토리 : 작업 을 모두 수행 할 영역 (파일 작성, 편집, 삭제 및 구성)
  • 스테이징 영역 : 작업 디렉토리에 대한 변경 사항을 나열 할 영역입니다 .
  • 저장소 : 여기서 Git은 프로젝트의 다른 버전으로 변경 한 내용을 영구 저장합니다.

힘내는 원래 리눅스 커널 소스를 관리하기 위해 만들어졌습니다. 프로젝트를보다 쉽게 ​​만들어줌으로써 작은 커밋, 프로젝트 포크 및 포크 간 병합, 짧은 수명의 브랜치를 많이 확보 할 수 있습니다.

CVS 또는 Subversion에 익숙한 사람들에게 가장 큰 변화는 모든 체크 아웃에는 소스 트리뿐만 아니라 프로젝트의 전체 히스토리가 있다는 것입니다. 리비전 수정, 이전 버전 체크 아웃, 로컬 히스토리 커밋, 브랜치 생성, 다른 브랜치 체크, 분기 또는 패치 파일 병합과 같은 일반적인 작업은 모두 중앙 서버와 통신하지 않고도 로컬에서 수행 할 수 있습니다. 따라서 대기 시간과 신뢰성의 가장 큰 원인이 제거됩니다. "업스트림"저장소와의 통신은 최신 변경 사항을 얻고 로컬 변경 사항을 다른 개발자에게 공개하는 경우에만 필요합니다. 이것은 이전에 기술 제약 (저장소를 소유 한 사람은 누구나)을 조직의 선택으로 바꿉니다 ( "업스트림"은 사용자가 동기화하도록 선택한 사용자 임).

버전

번역 출시일
2.13 2017-05-10
2.12 2017-02-24
2.11.1 2017-02-02
2.11 2016-11-29
2.10.2 2016-10-28
2.10 2016-09-02
2.9 2016-06-13
2.8 2016-03-28
2.7 2015-10-04
2.6 2015-09-28
2.5 2015-07-27
2.4 2015-04-30
2.3 2015-02-05
2.2 2014-11-26
2.1 2014-08-16
2.0 2014-05-28
1.9 2014-02-14
1.8.3 2013-05-24
1.8 2012-10-21
1.7.10 2012-04-06
1.7 2010-02-13
1.6.5 2009-10-10
1.6.3 2009-05-07
1.6 2008-08-17
1.5.3 2007-09-02
1.5 2007-02-14
1.4 2006-06-10
1.3 2006-04-18
1.2 2006-02-12
1.1 2006-01-08
1.0 2005-12-21
0.99 2005-07-11

첫 번째 저장소를 만든 다음 파일을 추가하고 커밋하십시오.

커맨드 라인에서, 먼저 Git이 설치되어 있는지 확인하십시오.

모든 운영 체제에서 :

git --version

UNIX 계열 운영 체제 :

which git

아무 것도 반환되지 않거나 명령이 인식되지 않으면 설치 프로그램을 다운로드하고 실행하여 시스템에 Git을 설치해야 할 수 있습니다. 매우 명확하고 쉬운 설치 지침은 Git 홈페이지 를 참조하십시오.

힘내 설치 후 사용자 이름과 이메일 주소를 설정하십시오 . 커밋 하기 전에 수행하십시오.

Git이 설치되면 버전 제어하에 놓고 싶은 디렉토리로 이동하여 빈 Git 저장소를 만듭니다.

git init

숨겨진 폴더 인 .git 이 만들어 지는데, 여기에는 Git이 작동하는 데 필요한 배관이 들어 있습니다.

다음으로 Git이 새 저장소에 추가 할 파일을 확인하십시오. 이 단계는 특별한주의가 필요합니다.

git status

결과 파일 목록을 검토하십시오. 당신은 Git에게 버전 제어에 배치 할 파일을 지정할 수 있습니다 (암호와 같은 기밀 정보가있는 파일이나 repo를 혼란스럽게하는 파일을 추가하지 마십시오).

git add <file/directory name #1> <file/directory name #2> < ... >

목록에있는 모든 파일을 저장소에 액세스 할 수있는 모든 사람과 공유해야하는 경우 단일 명령으로 현재 디렉토리와 해당 하위 디렉토리의 모든 항목을 추가합니다.

git add .

이 것 "단계" 모든 파일들을이 커밋 처음에 최선을 다하고 될 준비, 버전 제어에 추가 할 수 있습니다.

버전 제어를 원하지 않는 파일의 경우 add 명령을 실행하기 전에 .gitignore 라는 파일을 만들고 채 웁니다 .

커밋 메시지와 함께 추가 된 모든 파일을 커밋하십시오.

git commit -m "Initial commit"

이것은 주어진 메시지로 새로운 커밋 을 만듭니다. 커밋은 전체 프로젝트의 저장 또는 스냅 샷과 같습니다. 이제이를 원격 저장소로 푸시 하거나 업로드 할 수 있으며 필요하면 나중에 다시 이동할 수 있습니다.
-m 매개 변수를 생략하면 기본 편집기가 열리고 거기에서 커밋 메시지를 편집하고 저장할 수 있습니다.

리모컨 추가하기

새 리모컨을 추가하려면 터미널에서 저장소가 저장된 디렉토리에서 git remote add 명령을 사용하십시오.

git remote add 명령은 두 개의 인수를 취합니다.

  1. 원격 이름 (예 : origin
  2. 원격 URL (예 https://<your-git-service-address>/user/repo.git
    git remote add origin https://<your-git-service-address>/owner/repository.git

참고 : 리모컨을 추가하기 전에 git 서비스에 필요한 리포지토리를 만들어야합니다. 리모컨을 추가 한 후 커밋 / 푸시 할 수 있습니다.

저장소 복제

git clone 명령은 기존 Git 저장소를 서버에서 로컬 시스템으로 복사하는 데 사용됩니다.

예를 들어, GitHub 프로젝트를 복제하려면 :

cd <path where you'd like the clone to create a directory>
git clone https://github.com/username/projectname.git

BitBucket 프로젝트를 복제하려면

cd <path where you'd like the clone to create a directory>
git clone https://yourusername@bitbucket.org/username/projectname.git

이렇게하면 로컬 컴퓨터에 projectname 이라는 디렉토리가 생성되고 원격 Git 저장소의 모든 파일이 포함됩니다. 여기에는 프로젝트의 소스 파일과 프로젝트의 전체 기록 및 구성을 포함하는 .git 하위 디렉토리가 포함됩니다.

MyFolder 와 같이 다른 디렉토리 이름을 지정하려면 다음과 같이하십시오.

git clone https://github.com/username/projectname.git MyFolder

또는 현재 디렉토리에서 복제하려면 다음을 수행하십시오.

git clone https://github.com/username/projectname.git .

노트 :

  1. 지정된 디렉토리에 복제 할 때 디렉토리는 비어 있거나 존재하지 않아야합니다.

  2. 다음 명령의 ssh 버전을 사용할 수도 있습니다.

    git clone git@github.com:username/projectname.git
    

https 버전과 ssh 버전은 동일합니다. 그러나 GitHub와 같은 일부 호스팅 서비스에서는 ssh 대신 https 를 사용하는 것이 좋습니다 .

업스트림 리모컨 설정하기

포크 (예 : Github의 오픈 소스 프로젝트)를 복제 한 경우 업스트림 저장소에 대한 푸시 액세스 권한이 없을 수 있으므로 포크는 모두 필요하지만 업스트림 저장소를 가져올 수 있어야합니다.

먼저 원격 이름을 확인하십시오.

$ git remote -v
origin    https://github.com/myusername/repo.git (fetch)
origin    https://github.com/myusername/repo.git (push)
upstream  # this line may or may not be here

upstream 이 이미있는 경우 ( 일부 Git 버전에 있음) URL을 설정해야합니다 (현재 비어 있습니다).

$ git remote set-url upstream https://github.com/projectusername/repo.git

업스트림이 없거나 친구 / 동료의 포크를 추가하려는 경우 (현재 존재하지 않음) :

$ git remote add upstream https://github.com/projectusername/repo.git
$ git remote add dave https://github.com/dave/repo.git

코드 공유

코드를 공유하기 위해 로컬 저장소를 복사 할 원격 서버에 저장소를 만듭니다.

원격 서버의 공간 사용을 최소화하려면 베어 저장소를 만드십시오. 하나의 .git 오브젝트 만 있고 파일 시스템에 작업 사본을 작성하지 않는 저장소입니다. 보너스 로이 리모컨 을 업스트림 서버로 설정하면 다른 프로그래머와 쉽게 업데이트를 공유 할 수 있습니다.

원격 서버에서 :

git init --bare /path/to/repo.git

로컬 컴퓨터 :

git remote add origin ssh://username@server:/path/to/repo.git

( ssh: 는 원격 저장소에 액세스하는 한 가지 방법 일뿐입니다.)

이제 로컬 저장소를 원격지로 복사하십시오.

git push --set-upstream origin master

--set-upstream (또는 -u )를 추가하면 인수가없는 Git 명령에 사용되는 업스트림 (추적) 참조가 생성됩니다 (예 : git pull .

사용자 이름 및 전자 메일 설정

You need to set who you are *before* creating any commit.  That will allow commits to have the right author name and email associated to them.

원격 저장소로 푸시 할 때 인증과 관련이 없습니다 (예 : GitHub, BitBucket 또는 GitLab 계정을 사용하여 원격 저장소로 푸시 할 때)

모든 저장소에 대해 해당 ID를 선언하려면 git config --global
이렇게하면 사용자의 .gitconfig 파일에 설정이 저장됩니다 (예 : $HOME/.gitconfig 또는 Windows의 경우 %USERPROFILE%\.gitconfig .

git config --global user.name "Your Name"
git config --global user.email mail@example.com

단일 저장소에 대한 ID를 선언하려면 저장소 내에서 git config 사용하십시오.
이렇게하면 개별 저장소의 설정을 $GIT_DIR/config 파일에 저장합니다. 예 : /path/to/your/repo/.git/config .

cd /path/to/my/repo
git config user.name "Your Login At Work"
git config user.email mail_at_work@example.com

저장소의 구성 파일에 저장된 설정은 해당 저장소를 사용할 때 전역 구성보다 우선합니다.


팁 : 서로 다른 ID (오픈 소스 프로젝트, 직장, 개인 리포지토리 등)가 있고 작업중인 각 리포지스에 대해 올바른 ID를 설정하는 것을 잊지 않으려는 경우 :

  • 전역 ID 제거

    git config --global --remove-section user.name
    git config --global --remove-section user.email
    
2.8
  • git이 전체 설정이 아닌 저장소의 설정 내에서만 사용자의 신원을 확인하도록하려면 다음을 수행하십시오.

      git config --global user.useConfigOnly true
    

그렇게하면 주어진 저장소에 대해 user.nameuser.email 을 설정하고 커밋을 시도하는 것을 잊어 버리면 다음과 user.email 표시됩니다.

no name was given and auto-detection is disabled
no email was given and auto-detection is disabled

명령에 대해 배우기

git 명령에 대한 자세한 정보 (예 : 명령의 기능, 사용 가능한 옵션 및 기타 설명서)에 대한 정보를 얻으려면 --help 옵션이나 help 명령을 사용하십시오.

예를 들어, git diff 명령에 대한 모든 사용 가능한 정보를 얻으려면 다음을 사용하십시오.

git diff --help
git help diff

마찬가지로 status 명령에 대한 사용 가능한 모든 정보를 얻으려면 다음을 사용하십시오.

git status --help
git help status

가장 많이 사용되는 명령 행 플래그의 의미를 보여주는 빠른 도움말 만 -h 사용 -h .

git checkout -h

Git 용 SSH 설정

Windows 를 사용하는 경우 Git Bash를 엽니 다. Mac 또는 Linux를 사용하는 경우 터미널을여십시오.

SSH 키를 생성하기 전에 기존의 SSH 키가 있는지 확인할 수 있습니다.

~/.ssh 디렉토리의 내용을 나열하십시오.

$ ls -al ~/.ssh 
# Lists all the files in your ~/.ssh directory

이미 공용 SSH 키가 있는지 보려면 디렉토리 목록을 확인하십시오. 기본적으로 공개 키의 파일 이름은 다음 중 하나입니다.

id_dsa.pub
id_ecdsa.pub
id_ed25519.pub
id_rsa.pub

Bitbucket, GitHub (또는 이와 유사한) 계정에서 사용하고자하는 공개 및 개인 키 쌍이 나열되어 있으면 id_*.pub 파일의 내용을 복사 할 수 있습니다.

그렇지 않은 경우 다음 명령을 사용하여 새로운 공개 키와 개인 키 쌍을 만들 수 있습니다.

$ ssh-keygen

Enter 또는 Return 키를 눌러 기본 위치를 적용하십시오. 메시지가 나타나면 암호를 입력하고 다시 입력하거나 비워 둡니다.

SSH 키가 ssh-agent에 추가되었는지 확인하십시오. 이미 실행중인 경우 백그라운드에서 ssh-agent를 시작하십시오.

$ eval "$(ssh-agent -s)"

SSH 키를 ssh-agent에 추가하십시오. 명령에서 id_rsa개인 키 파일 의 이름으로 바꿔야 합니다 .

$ ssh-add ~/.ssh/id_rsa

기존 저장소의 업스트림을 HTTPS에서 SSH로 변경하려는 경우 다음 명령을 실행할 수 있습니다.

$ git remote set-url origin ssh://git@bitbucket.server.com:7999/projects/your_project.git

SSH를 통해 새 저장소를 복제하려면 다음 명령을 실행하면됩니다.

$ git clone ssh://git@bitbucket.server.com:7999/projects/your_project.git

힘내 설치

Git을 사용 해보자. 먼저 설치해야합니다. 당신은 그것을 여러 가지 방법으로 얻을 수 있습니다. 두 가지 주요 사항은 소스에서 설치하거나 플랫폼에 맞는 기존 패키지를 설치하는 것입니다.

소스에서 설치

가능하다면 소스에서 힘내를 설치하는 것이 일반적입니다. 왜냐하면 가장 최신 버전을 얻을 것이기 때문입니다. Git의 각 버전에는 유용한 UI 기능이 포함되어있는 경향이 있으므로 소스에서 소프트웨어를 컴파일 할 때 편안함을 느끼는 경우 최신 버전을 사용하는 것이 가장 좋은 방법입니다. 또한 많은 리눅스 배포판에는 매우 오래된 패키지가 포함되어 있습니다. 최신 배포판이나 백 포트를 사용하지 않는 한 소스에서 설치하는 것이 최선의 방법 일 수 있습니다.

Git을 설치하려면 curl, zlib, openssl, expat 및 libiconv와 같은 라이브러리가 필요합니다. 예를 들어 yum (예 : Fedora) 또는 apt-get (예 : Debian 기반 시스템) 시스템을 사용하는 경우 다음 명령 중 하나를 사용하여 모든 종속성을 설치할 수 있습니다.

$ yum install curl-devel expat-devel gettext-devel \
  openssl-devel zlib-devel

$ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \
  libz-dev libssl-dev

필요한 모든 의존성이 있으면 Git 웹 사이트에서 최신 스냅 샷을 얻을 수 있습니다.

http://git-scm.com/download 그런 다음 컴파일하고 설치하십시오.

$ tar -zxf git-1.7.2.2.tar.gz
$ cd git-1.7.2.2
$ make prefix=/usr/local all
$ sudo make prefix=/usr/local install

이 작업이 끝나면 Git을 통해 Git을 통해 업데이트를 얻을 수 있습니다.

$ git clone git://git.kernel.org/pub/scm/git/git.git

Linux에 설치

바이너리 설치 프로그램을 통해 Linux에 Git을 설치하려면 일반적으로 배포본과 함께 제공되는 기본 패키지 관리 도구를 사용하십시오. Fedora를 사용하고 있다면 yum을 사용할 수 있습니다.

$ yum install git

또는 우분투와 같은 데비안 기반 배포판을 사용하는 경우 apt-get을 시도해보십시오.

$ apt-get install git

Mac에 설치하기

Mac에 Git을 설치하는 세 가지 쉬운 방법이 있습니다. 가장 쉬운 방법은 SourceForge 페이지에서 다운로드 할 수있는 그래픽 Git 설치 프로그램을 사용하는 것입니다.

http://sourceforge.net/projects/git-osx-installer/

그림 1-7. Git OS X 설치 프로그램. 다른 주요 방법은 Git을 MacPorts ( http://www.macports.org) 를 통해 설치하는 것입니다. MacPorts가 설치되어있는 경우 Git을 통해 설치하십시오.

$ sudo port install git +svn +doc +bash_completion +gitweb

모든 추가 항목을 추가 할 필요는 없지만 Subversion 저장소가있는 Git을 사용해야하는 경우 (8 장 참조)를 대비하여 + svn을 포함 시키려합니다.

Homebrew ( http://brew.sh/) 는 Git을 설치하는 또 다른 방법입니다. Homebrew를 설치했다면 via Git을 설치하십시오.

$ brew install git

Windows에 설치

Windows에 Git을 설치하는 것은 매우 쉽습니다. msysGit 프로젝트는 쉬운 설치 절차 중 하나를 가지고 있습니다. 단순히 GitHub 페이지에서 설치 프로그램 exe 파일을 다운로드하여 실행하십시오 :

http://msysgit.github.io

설치가 완료되면 명령 줄 버전 (나중에 사용할 SSH 클라이언트 포함)과 표준 GUI가 모두 제공됩니다.

Windows 사용에 대한 참고 사항 : 제공된 msysGit 쉘 (Unix 스타일)을 사용하여 Git을 사용해야하므로이 책에있는 복잡한 명령 줄을 사용할 수 있습니다. 어떤 이유로 Windows 고유의 쉘 / 명령 행 콘솔을 사용해야하는 경우 작은 따옴표 대신에 큰 따옴표 (공백이있는 매개 변수의 경우)를 사용해야하고 곡절 악센트로 끝나는 매개 변수를 인용해야합니다 (^ ) 마지막 줄에 있으면 Windows에서 연속 기호로 사용됩니다.