Top

Git을 이용한 버전 관리 [각종 OS별 설치법부터 기본 원리와 고급 활용까지]

  • 원서명Git: Version Control for Everyone (ISBN 9781849517522)
  • 지은이라비샨카 소마순다람
  • 옮긴이김지헌
  • ISBN : 9788960775473
  • 18,000원
  • 2014년 04월 23일 펴냄
  • 페이퍼백 | 204쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 오픈소스 프로그래밍

책 소개

요약

깃(Git)은 오픈 소스로 제공되는 분산 버전 관리 시스템이다. 깃을 이용하면 다수의 사용자가 동시에 접근할 수 있는 파일과 폴더의 버전을 다양하게 유지하면서 복잡한 개발 프로젝트를 수행할 수 있다. 협업을 하는 것도 각자가 독립적으로 진행하는 것도 가능하며, 텍스트 기반 파일은 번거로움 없이 원활하게 병합이 가능하다.
이 책은 버전 관리를 단계별 학습으로 제공하고, 일상적인 업무에 적용하는 방법도 안내한다. 개발자, 운영자, 시스템 분석가, 소프트웨어 시스템 설계자 등 누구에게나 쉽고 유용할 것이다.

이 책에서 다루는 내용

■ 버전 관리 시스템의 개념과 필요한 이유
■ 기기에 깃을 설치하고 설정하는 방법
■ 깃의 기본 개념과 버전 관리를 시작하는 방법
■ 버전 관리 파일에 대한 공유와 협업
■ 매일 생산성을 향상시킬 수 있는 비결
■ 분기(branch)와 분산 작업
■ 생산성 향상을 위한 팁
■ 깃을 강화할 수 있는 추가 도구
■ 깃을 이용해 텍스트 기반 파일의 운용을 확장하는 방법
■ 윈도우와 리눅스, 맥을 아우르는 그래픽과 명령어 모드를 이용한 개념

이 책의 구성

1장, 버전 관리 시스템 소개에서는 버전 관리 시스템의 개념과 소개, 변천사와 필요성, 그리고 깃이 버전 관리 시스템 중에서 최고로 꼽히는 이유를 알아본다.

2장, 깃 설치에서는 운영체제 별 깃 설치 방법을 안내한다.

3장, 매일의 생산성 증대에서는 깃으로 파일의 버전을 관리할 때 알아야 할 기본적이고 중요한 5가지 개념(저장소(Repository) 준비, 파일 추가, 파일 커밋(commit), 버전 관리 시작, 체크아웃을 사용한 복구, 리셋)을 설명한다.

4장, 깃을 이용한 분산 작업에서는 인트라넷과 인터넷 등 다양한 매체를 통해 콘텐츠를 공유하는 협업 개발의 요점을 알려주고 여러 사람이 각기 다른 장소에서 함께 작업하기 위한 다양한 방법을 제시한다.

5장, 깃의 고급 기능에서는 1~4장에서 익힌 깃의 일반적인 동작들을 다양한 상황에서 향상시킬 수 있는 팁과 유용한 정보를 설명한다.

6장, 텍스트 기반 파일을 위한 깃에서는 깃의 가장 강력한 장점 중 하나인 병합(merging)이라는 새로운 기능을 알아본다. 콘텐츠를 병합하는 방법과 병합 과정에서 발생할 수 있는 충돌(Conflict)을 해결하는 방법을 설명한다.

7장, 깃을 사용한 분기(branching)에서는 깃에서 가장 높게 평가 받는 기능 중 하나인 분기(branching)의 중요성과 작업 모드를 변경하는 방법을 설명한다.

8장, 깃의 원리에서는 깃의 내부 동작 방식을 심도 있게 살펴보고, 그것들을 간단한 단어로 이해한다. 1~7장에서 실행했던 여러 가지 깃 명령이 실행될 때 어떻게 동작하는지 기초적인 수행 과정도 설명한다.

저자/역자 소개

지은이의 말

이 책은 깃을 사용해본 경험이 없는 사용자가 깃 버전 관리 시스템(Git Version Control System)을 사용해 모든 형태의 전자 데이터를 효과적으로 처리하고 생산성을 향상시킬 수 있도록 안내한다.
설치 과정을 안내하는 단계별 예제와 실행 화면을 통해 데이터 버전 관리 최적의 도구인 깃의 개념을 이해할 수 있도록 구성했다.
각 장은 단순하고 일상적인 사례와 비유를 들어 개념을 설명하며, 이를 통해 유용한 학습 경험을 얻을 수 있다. 특히 윈도우와 리눅스, 맥 OS 등 다양한 환경을 고려해 모든 상황을 GUI와 CLI(Command-Line Interface)로 설명한다.
마지막 8장에서는 독자들이 1~7장에서 수행했던 깃의 기능을 실행할 때 생기는 변화들을 손쉽게 이해할 수 있게 구성했다. 이 책을 읽기 전에 깃을 사용해본 독자들도 흥미로워할 것이다.
책을 다 읽을 즈음이면 이론적인 지식은 물론이고 디지털 파일을 다루는 방식을 변화시킬 때 필요한 개념에 대한 이해와 경험을 얻게 될 것이라 확신한다.

지은이 소개

라비샨카 소마순다람(Ravishankar Somasundaram)

6년 이상 다양한 영역과 분야를 아우르며 고객에게 기술적 솔루션을 제공하는 일을 했다. 학습과 교육에 대한 열정이 가득한 라비샨카는, 배움의 유일한 목적이 다양한 관점을 갖게 하는 것이라고 굳게 믿고 있다. 따라서 어떻게 하면 “배우기 위한 학습”을 할 수 있는지에 중점을 두고 다양한 교육 방식을 시도하는 중이다.

옮긴이의 말

“깃(Git)은 어렵다?”
개발자가 작성한 소스 코드를 위한 버전 관리 시스템(VCS, Version Control System)을 선정할 때 깃을 추천하면 종종 듣는 이야기다. 아직까지 우리에게 깃은 낯선 존재다. 우리나라에서는 깃보다 SVN을 더욱 친숙하게 생각하는 개발자들이 많다. 일반적으로 깃은 터미널 창을 열어 명령을 입력하며 제어해야 하기 때문에 많은 개발자들이 이질감을 느낀다. 그러나 깃의 강력한 기능을 쉽게 사용할 수 있는 GUI 클라이언트가 있다. 아틀라시안(Atlassian)에서 만든 소스 트리(Source Tree)를 비롯해 이미 많은 통합개발환경(IDE)(이클립스, 인텔리제이 등)에서 깃의 기능을 지원한다.

깃을 처음 사용하는 것은 쉽지 않지만, 배우는 것은 분명 어렵지 않다. 상황에 따라 차분하게 명령을 입력하고 그 결과를 확인하는 과정을 진행하고 나면 그리 어렵지 않다는 사실을 알게 될 것이다. 깃을 처음 접하는 사람들에게 “애드(add)하고 커밋(commit)하고 끌어오고(pull) 충돌(conflict)한 후 병합(merge)하고 나서 밀어 넣으면(push) 된다.”라고 설명하면, 처음에는 외계어처럼 들릴 것이다. 하지만 저 한 문장에서 설명하는 기능만 이해하고 나면 ‘깃을 쓸 줄 안다.’고 이야기할 수 있게 된다.

깃을 추천하는 가장 큰 이유는 분기(branching)와 병합(merging)이 다른 버전 관리 시스템에 비해 훨씬 쉽기 때문이다. 깃을 이용하면 개발 할 때 기능을 최소 단위로 쪼개고 그 단위 기능 별로 분기를 생성하고 단위 기능을 병합하는 과정이 매우 쉽다. 이 강력한 기능에 빠져들고 나면 다른 버전 관리 시스템을 사용하기가 어려워질 정도다.

기술을 배울 때에는 차근차근 따라 하는 것이 중요하다. 기술의 개념을 이해하는 과정은 지루한 경우가 많다. 반면 화면을 보면서 명령을 입력하고, 그 결과를 바로바로 확인하면 재미 있을 뿐 아니라 효과적이다. 머리로 생각하는 것이 아니라 손이 기억하도록 하는 것이 가장 친숙한 지식 습득 과정이기 때문이다.

이 책은 깃에 익숙한 사람에게는 시시한 내용일 수 있지만, 깃을 처음 접하는 사람이 다양한 사용 환경에서 깃을 이용하면서 참고하기에는 좋다. 다양한 운영체제를 사용하는 사람들을 대상으로 단계 별로 깃의 기능을 설명하고 따라 해보고 왜 그렇게 동작하는지 집고 넘어가게 구성돼 있다.

“깃은 생각하는 것만큼 어렵지 않다!”
부담감은 버리고 차분하게 시작하자. ‘천 리 길도 한걸음부터’니까. 개발자에게 ‘깃’이라는 강력한 무기를 획득할 수 있는 좋은 기회다.
바로 Go Go!

옮긴이 소개

김지헌

개발은 ‘취미 생활을 즐기기 위한 부업 활동’이라는 건방진 소리를 쉬이 내뱉는 프로그래머다. 스쿠버 다이빙, 스포츠 클라이밍, 로드 라이딩을 즐기는 괴상한 프로그래머로, 개발과 관련된 새로운 기술에 관심이 많다. 귀찮은 걸 싫어하는 게으름뱅이치고는 부지런하게 여행 다니고 레저를 즐기고 개발 관련 컨퍼런스에 참가하고 개발자들과 만나는 것을 즐긴다. ‘넓고 얕은 지식’ 체계를 선호하는 제너럴리스트를 지향하는 일반인이다.

목차

목차
  • 1 버전 관리 시스템 소개
    • 무엇을 도와드릴까요?
    • 버전 관리 시스템이란?
    • 버전 관리 시스템이 필요한 이유
    • 버전 관리 시스템의 종류
      • 로컬 버전 관리 시스템
        • 토막 상식
      • 중앙 집중형 버전 관리 시스템
      • 분산 버전 관리 시스템
    • 깃에 빠져들다
      • 원자성
      • 성능
      • 안정성
  • 정리

  • 2 깃 설치
    • 유형 선택: 운영체제에 적합한 패키지 다운로드
      • 윈도우
      • 리눅스
      • 설치
      • 실습 예제 | 깃을 윈도우에 설치
      • 실습 예제 | 맥에 깃 설치
      • 실습 예제 | 리눅스에 깃 설치
    • 정리

  • 3 매일의 생산성 증대
    • 준비: 깃 준비
    • 초기화
      • 실습 예제 | GUI 모드에서 초기화
      • 실습 예제 | CLI 모드에서 초기화
      • 화면 뒤에서 일어난 일
      • 깃 설정
      • 실습 예제 | GUI 모드에서 깃 설정
        • 되돌아가기
      • 실습 예제 | CLI 모드에서 Git 설정
    • 디렉토리에 파일 추가
      • 실습 예제 | (GUI와 CLI 모드에서) 디렉토리에 파일 추가
      • 파일 추적 배제
      • 번거로운 작업
        • 구원의 .gitignore
      • 실습 예제 | .ginignore의 사용 방법
      • 추가 되돌리기
    • 추가된 파일 커밋
      • 실습 예제 | GUI 모드에서 파일 커밋
      • 실습 예제 | CLI 모드에서 파일 커밋
      • 실습 예제 | GUI 모드에서 재스캔
    • 체크아웃
      • 실습 예제 | GUI 모드에서 체크아웃
      • 실습 예제 | CLI 모드에서 체크아웃
    • 리셋
      • 실습 예제 | GUI 모드에서 리셋
      • 실습 예제 | CLI 모드에서 리셋
      • 깃 도움말
    • 정리

  • 4 깃을 이용한 분산 작업
    • 파일을 공유해야 하는 이유
      • 시나리오 1: 1인 플레이어
      • 시나리오 2: 동시에 여러 명의 플레이어 접속
        • 원격지의 소스를 푸시하고 풀하기
      • 시나리오 1: 해결책
        • 공개: 인터넷을 통해 공유
      • 실습 예제 | CLI 모드에서 원격지의 origin 추가
      • 실습 예제 | CLI 모드를 이용해 다른 곳에서 작업 시도
      • 실습 예제 | GUI 모드에서 원격 origin 추가
      • 실습 예제 | GUI 모드를 이용해서 작업 재개
      • 시나리오 2: 해결책
        • 비트버킷 저장소에 사용자들 초대
        • 로컬에 머무르기: 인트라넷으로 공유
      • 실습 예제 | CLI 모드에서 노출된 저장소 생성
      • 실습 예제 | GUI 모드에서 노출된 저장소 생성
    • 정리

  • 5 깃의 고급 기능
    • 고급 기능을 배워야 하는 이유
      • 준비물
      • Shortlog
      • 실습 예제 | 짧은 로그에 대한 지식 얻기
      • 실습 예제 | 짧은 로그의 파라미터
      • 로그 검색: git log
      • 실습 예제 | 커밋 로그 건너뛰기
      • 실습 예제 | 날짜 범위를 지정해 로그 필터
      • 실습 예제 | 단어나 철자 검색
      • 청소
      • 실습 예제 | 엉망진창으로 흐트리기
      • 실습 예제 | 패턴에 부합하는 혼란한 상태를 말끔히 청소
      • 실습 예제 | 에러 없이 혼란 상태를 완벽히 쓸어내기
      • 태깅
      • 실습 예제 | 경량/비주석 태그
      • 실습 예제 | 태그 참조
      • 실습 예제 | 주석 태그 사용
        • 간단한 실습
    • 정리

  • 6 텍스트 기반 파일을 위한 깃
    • 텍스트 기반 파일을 위한 깃: 소개
    • 멀티플레이어 모드: 동시에 여러 명의 플레이어
      • 한 번에 한 명씩만 하는 다중 플레이어
      • 다중 플레이어: 모든 손을 탁자 위에
        • 저장소 공유
      • 실습 예제 | 공유 준비
      • 실습 예제 | 강제 분산 작업
      • 실습 예제 | Bob의 변경
      • 실습 예제 | Lisa의 변경
      • 실습 예제 | Lisa의 병합 충돌 시험
      • 실습 예제 | Lisa의 병합 충돌 해결
      • GUI 모드: 저장소 이력 그래프 확인
      • CLI 모드: 저장소 이력 그래프 확인
      • 실습 예제 | 중앙 노출된 저장소에 대한 동기화 처리
    • 정리

  • 7 깃을 사용한 분기
    • 분기란?
    • 왜 분기가 필요한가
      • 명명 규약
    • 분기가 필요할 때
    • 깃으로 분기
      • 시나리오
      • 실습 예제 | GUI 모드에서 분기 생성
      • 실습 예제 | CLI 모드에서 분기 생성
    • .config 파일: 축약어 사용
      • 실습 예제 | CLI에서 간단한 에일리어스 추가
      • 실습 예제 | CLI에서 하나의 에일리어스에 명령 엮기
      • 실습 예제 | GUI에서 복잡한 에일리어스 추가
    • 정리

  • 8 깃의 원리
    • 깃의 두 면모: 배관과 애자
    • 깃 초기화
      • Hooks
      • Info
      • Config
      • Description
      • Objects
        • Blob
        • Trees
        • Commits
        • Tags
      • HEAD
      • Refs
        • heads와 tags 디렉토리 내부에서 충돌 알림
      • Index
    • 깃: 콘텐츠 추적 시스템
    • 깃 추가
    • 깃 커밋
    • 깃 상태
    • 깃 복제
    • 깃 원격
    • 깃 분기
    • 깃 태그
    • 깃 패치
    • 깃 병합
    • 깃 풀
    • 깃 푸시
    • 깃 체크아웃
    • 관계와 관계를 엮기: 깃 packfiles
      • packfile 전송
    • 정리

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

[p.74 : 아래에서 2행]
저징소
->
저장소

[p.105 : 아래에서 2행]
Report > Fetch from > Origin을
->
Remote > Fetch from > Origin을

[p.96 : 6행 ]
I have code I wnat to import
->
I have code I want to import.

[p.113 : 그림 ]
Origin/non bare responsitory
->
Origin/non bare repository

[p.122 : 도표]
-numbered -> --numbered
-summary -> --summary
-email -> --email
-help -> --help

[p.149 : 3행]
First line fromo source
->
First line from source

[p.168 : 9행]
participante
->
participant

[p.169 : 8행]
participante
->
participant