품목정보
출간일 | 2020년 03월 16일 |
---|---|
쪽수, 무게, 크기 | 432쪽 | 183*235*18mm |
ISBN13 | 9791165210885 |
ISBN10 | 1165210886 |
출간일 | 2020년 03월 16일 |
---|---|
쪽수, 무게, 크기 | 432쪽 | 183*235*18mm |
ISBN13 | 9791165210885 |
ISBN10 | 1165210886 |
기본기를 탄탄하게 다지는 깃(git) 입문서 도해와 실습으로 깃, 소스트리, 깃허브를 배우자! 버전 관리 시스템(VCS)은 파일의 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템이다. VCS를 사용하면 파일이나 프로젝트를 이전 상태로 되돌릴 수 있고, 시간에 따라 수정 내용을 비교해볼 수도 있다. 또한, 문제가 있을 때 누가 만든 문제인지 알 수 있고, 파일을 분실하거나 잘못 수정했을 때 손쉽게 복구가 가능하다. 『Git 교과서』는 대표적인 버전 관리 시스템인 깃의 설치부터 커밋, 브랜치, 임시 처리, 병합, 복귀, 서브모듈, 태그까지 깃 입문자가 꼭 알아야 할 내용을 설명한다. 또한, 깃 명령어와 소스트리, 깃허브를 연동해 실습하고, 필요한 내용은 도해로 살펴보면서 깃의 동작 원리를 이해할 수 있다. 이제 막 깃을 시작했거나 깃을 배우고자 하는 사람에게 추천한다. |
1장 깃과 버전 관리 1.1 버전 관리 __1.1.1 버전이란? __1.1.2 버전 관리는 왜 필요할까? 1.2 버전 관리 시스템 __1.2.1 버전 관리 소프트웨어 1.3 깃 __1.3.1 백업 기능 __1.3.2 협업 개발 1.4 깃의 동작 한눈에 보기 1.5 정리 2장 깃과 소스트리 설치 및 환경 설정 2.1 깃 설치 __2.1.1 윈도에서 설치 __2.1.2 리눅스에서 설치 __2.1.3 macOS에서 설치 2.2 소스트리 설치 __2.2.1 설치 파일 내려받기 __2.2.2 설치 2.3 첫 번째 깃 실행 __2.3.1 터미널 __2.3.2 깃 명령어로 실행 __2.3.3 소스트리로 실행 2.4 환경 설정 __2.4.1 config 명령어 __2.4.2 로컬 사용자 __2.4.3 글로벌 사용자(추천) __2.4.4 환경 설정 파일 확인 및 직접 수정 __2.4.5 소스트리의 환경 설정 __2.4.6 별칭 2.5 비주얼 스튜디오 코드 2.6 정리 3장 깃 개념 잡기 3.1 깃 저장소 생성 __3.1.1 폴더와 깃 저장소 __3.1.2 초기화 __3.1.3 숨겨진 폴더 = .git 폴더 __3.1.4 소스트리와 연결 3.2 워킹 디렉터리 __3.2.1 워킹 디렉터리란? __3.2.2 파일의 untracked 상태와 tracked 상태 3.3 스테이지 __3.3.1 스테이지 = 임시 영역 __3.3.2 파일의 stage 상태와 unstage 상태 __3.3.3 파일의 modified 상태와 unmodified 상태 3.4 파일의 상태 확인 __3.4.1 status 명령어로 깃 상태 확인 __3.4.2 소스트리에서 깃 상태 확인 3.5 파일 관리 목록에서 제외: .gitignore __3.5.1 .gitignore 파일 __3.5.2 .gitignore 파일 표기법 3.6 깃 저장소 복제 __3.6.1 공개 저장소 __3.6.2 다운로드 vs 복제 __3.6.3 복제 명령어 3.7 정리 4장 커밋 4.1 코드의 변화 __4.1.1 파일 관리 방법 4.2 새 파일 생성 및 감지 __4.2.1 새 파일 생성 __4.2.2 깃에서 새 파일 생성 확인 __4.2.3 소스트리에서 새 파일 감지 4.3 깃에 새 파일 등록 __4.3.1 스테이지에 등록 __4.3.2 파일의 추적 상태 확인 __4.3.3 파일 등록 취소 __4.3.4 등록된 파일 이름이 변경되었을 때 4.4 첫 번째 커밋 __4.4.1 HEAD __4.4.2 스냅샷 __4.4.3 파일 상태와 커밋 4.5 커밋 확인 __4.5.1 스테이지 초기화 __4.5.2 로그 기록 확인 __4.5.3 소스트리에서 로그 기록 확인 4.6 두 번째 커밋 __4.6.1 파일 수정 __4.6.2 파일 변경 사항 확인 __4.6.3 수정된 파일 되돌리기 __4.6.4 스테이지에 등록 __4.6.5 두 번째 커밋 __4.6.6 두 번째 커밋 확인 __4.6.7 깃허브에서 확인 4.7 메시지가 없는 빈 커밋 __4.7.1 세 번째 커밋 __4.7.2 소스트리에서 빈 커밋 __4.7.3 빈 커밋 확인 4.8 커밋 아이디 __4.8.1 SHA1 __4.8.2 단축키 4.9 커밋 로그 __4.9.1 간략 로그 __4.9.2 특정 파일의 로그 4.10 diff 명령어 __4.10.1 파일 간 차이 __4.10.2 워킹 디렉터리 vs 스테이지 영역 __4.10.3 커밋 간 차이 __4.10.4 소스트리에서 간단하게 변경 이력 확인 __4.10.5 diff 내용을 추가하여 커밋 4.11 정리 5장 서버 5.1 서버 저장소 __5.1.1 협업 저장소 __5.1.2 연속된 작업 __5.1.3 새 멤버 5.2 깃허브 서버 준비 __5.2.1 깃허브 __5.2.2 저장소 생성 5.3 깃허브 연동 및 원격 등록 __5.3.1 로컬 저장소 __5.3.2 프로토콜 __5.3.3 원격 저장소의 리모트 목록 관리 __5.3.4 주소와 별칭 __5.3.5 원격 저장소에 연결 __5.3.6 소스트리에서 원격 브랜치 __5.3.7 별칭 이름 변경과 정보 __5.3.8 원격 서버 삭제 5.4 서버 전송 __5.4.1 push: 서버에 전송 5.5 자동으로 내려받기 __5.5.1 clone: 복제 __5.5.2 pull: 서버에서 내려받기 5.6 수동으로 내려받기 __5.6.1 자동 병합 __5.6.2 fetch: 가져오기 __5.6.3 merge 명령어로 수동 병합 5.7 순서 __5.7.1 최신 상태 __5.7.2 충돌 방지 5.8 정리 6장 브랜치 6.1 새로운 작업 __6.1.1 브랜치 작업 __6.1.2 깃 브랜치 특징 6.2 실습 준비 __6.2.1 저장소 생성 및 초기화 __6.2.2 기본 브랜치 6.3 브랜치 생성 __6.3.1 브랜치 생성 __6.3.2 브랜치 이름 __6.3.3 소스트리 브랜치 6.4 브랜치 확인 __6.4.1 간단 브랜치 목록 __6.4.2 브랜치 해시 __6.4.3 브랜치 세부 사항 확인 6.5 브랜치 이동 __6.5.1 체크아웃 __6.5.2 브랜치 동작 원리 __6.5.3 소스트리 __6.5.4 이전 브랜치 __6.5.5 워킹 디렉터리 정리 6.6 브랜치 공간 __6.6.1 브랜치 로그 __6.6.2 브랜치 소스 확인 6.7 HEAD 포인터 __6.7.1 마지막 커밋 __6.7.2 브랜치 HEAD __6.7.3 소스트리 HEAD __6.7.4 상대적 위치 __6.7.5 AHEAD, BHEAD 6.8 생성과 이동 __6.8.1 자동 이동 옵션 __6.8.2 커밋 이동 __6.8.3 HEAD를 활용한 이동 __6.8.4 돌아오기 6.9 원격 브랜치 __6.9.1 리모트 브랜치 __6.9.2 실습 준비 __6.9.3 브랜치 추적 __6.9.4 브랜치 업로드 __6.9.5 이름이 다른 브랜치 __6.9.6 업스트림 트래킹 __6.9.7 원격 브랜치 복사 __6.9.8 업스트림 연결 6.10 브랜치 전송 __6.10.1 브랜치 푸시 __6.10.2 브랜치 페치 6.11 브랜치 삭제 __6.11.1 일반적인 삭제 방법 __6.11.2 강제로 삭제하는 방법 __6.11.3 소스트리에서 삭제하는 방법 __6.11.4 리모트 브랜치를 삭제하는 방법 6.12 정리 7장 임시 처리 7.1 스태시 __7.1.1 기존 작업 도중에 새로운 변경 요청 __7.1.2 새 코드 작성 중 기존 코드를 수정 __7.1.3 스태시의 임시 스택 영역에 작업 중인 코드 저장 __7.1.4 임시 저장 영역의 스택 목록 __7.1.5 임시 저장한 스태시 불러오기 __7.1.6 스태시 복원으로 충돌 __7.1.7 스태시 복사 __7.1.8 스태시 삭제 __7.1.9 소스트리에서 스태시 사용 7.2 워킹 디렉터리 청소 7.3 정리 8장 병합과 충돌 8.1 병합 __8.1.1 하나씩 직접 비교하는 수동 병합 __8.1.2 깃으로 자동 병합 __8.1.3 병합 방식 8.2 Fast-Forward 병합 __8.2.1 브랜치 생성과 수정 작업 __8.2.2 병합 위치 __8.2.3 Fast-Forward 병합 적용 8.3 3-way 병합 __8.3.1 브랜치 생성과 수정 작업 __8.3.2 마스터 변경 __8.3.3 공통 조상 __8.3.4 병합 커밋 __8.3.5 병합 메시지 8.4 브랜치 삭제 __8.4.1 병합 후 삭제 8.5 충돌 __8.5.1 충돌이 생기는 상황 __8.5.2 실습을 위한 충돌 만들기 __8.5.3 수동으로 충돌 해결 __8.5.4 소스트리에서 충돌 해결 8.6 브랜치 병합 여부 확인 8.7 리베이스 __8.7.1 베이스 __8.7.2 베이스 변경 __8.7.3 리베이스 vs 병합 __8.7.4 리베이스 명령어 __8.7.5 리베이스 병합 __8.7.6 리베이스되었는지 확인 __8.7.7 리베이스 후 브랜치 __8.7.8 리베이스 충돌과 해결 __8.7.9 rebase 명령어로 커밋 수정 __8.7.10 리베이스할 때 주의할 점 8.8 정리 9장 복귀 9.1 되돌리기 __9.1.1 다시 시작 9.2 리셋 __9.2.1 복귀 시점 __9.2.2 reset 명령어 __9.2.3 soft 옵션 __9.2.4 mixed 옵션 __9.2.5 hard 옵션 __9.2.6 소스트리 __9.2.7 커밋 합치기 __9.2.8 스테이지 리셋 __9.2.9 작업 취소 __9.2.10 병합 취소 __9.2.11 주의할 점 9.3 리버트 __9.3.1 취소 커밋 __9.3.2 리버트 지정 __9.3.3 소스트리에서 리버트 __9.3.4 병합 취소 __9.3.5 리버트 히스토리 9.4 정리 10장 배포 관리와 태그 10.1 배포 10.2 버전 10.3 태그 10.4 태그 목록 10.5 Annotated 태그 __10.5.1 태그 생성 __10.5.2 간단한 메시지 __10.5.3 소스트리에서 태그 생성 __10.5.4 태그는 중복해서 생성할 수 없다 __10.5.5 태그 삭제 __10.5.6 태그의 상세 정보 확인: show 명령어 10.6 Lightweight 태그 __10.6.1 체크섬 __10.6.2 태그의 상세 정보 확인 10.7 특정 커밋 태그 __10.7.1 소스트리에서 특정 커밋 지정 10.8 태그를 사용한 체크아웃 __10.8.1 태그 브랜치 10.9 태그 공유 __10.9.1 원격 저장소 생성 __10.9.2 태그 동기화 __10.9.3 전체 태그 동기화 __10.9.4 원격 저장소의 태그 수정과 삭제 __10.9.5 원격 저장소에 로컬과 다른 이름으로 태그 전송 10.10 정리 11장 서브모듈 11.1 대형 프로젝트 __11.1.1 저장 용량 __11.1.2 저장소 분리 __11.1.3 상하 관계 11.2 실습을 위한 저장소 준비 __11.2.1 메인 저장소 생성 __11.2.2 자식 저장소 생성 11.3 서브모듈 추가 __11.3.1 저장소 연결 __11.3.2 설정 파일 __11.3.3 모듈 커밋 11.4 서브모듈 작업 __11.4.1 모듈 저장소 __11.4.2 모듈 상태 __11.4.3 모듈 커밋 __11.4.4 부모 커밋 11.5 자식 저장소 갱신 __11.5.1 자식 저장소 __11.5.2 자식 저장소 갱신 __11.5.3 자식 저장소 작업 __11.5.4 부모 저장소 적용 __11.5.5 부모 저장소 갱신 11.6 부모 저장소 복제 __11.6.1 부모 저장소 복제 __11.6.2 모듈 업데이트 11.7 부모 저장소 업데이트 __11.7.1 부모 업데이트 __11.7.2 부모 저장소로 풀 11.8 정리 12장 고급 기능 12.1 refs __12.1.1 실습 환경 준비 __12.1.2 해시 __12.1.3 역조회 __12.1.4 참조 목록 12.2 reflog __12.2.1 참조 기록 __12.2.2 기록 확인 __12.2.3 기간 확인 __12.2.4 기록 유지 12.3 파일 애너테이션 __12.3.1 blame __12.3.2 실습 환경 준비 __12.3.3 blame 명령어 __12.3.4 옵션 활용 12.4 replace __12.4.1 실습 환경 준비 __12.4.2 저장소 분리 __12.4.3 저장소 분리 __12.4.4 저장소 연결 12.5 가비지 콜렉트 __12.5.1 가비지 __12.5.2 압축 관리 __12.5.3 실행 __12.5.4 refs 압축 __12.5.5 환경 설정 12.6 prune __12.6.1 고립된 객체 __12.6.2 실습 환경 준비 __12.6.3 객체 삭제 __12.6.4 객체 정리 __12.6.5 원격 작업 12.7 rerere __12.7.1 동일한 충돌 __12.7.2 활성화 __12.7.3 실습 준비 __12.7.4 충돌 및 기록 __12.7.5 자동 해결 12.8 정리 자주 사용하는 명령어 모음 |
예전부터 Git에 대한 관심은 있었지만, 쉽사리 접근하기 어려웠다.
간단하게 github에서 괜찮은 오픈소스를 받은 적이 있었지만, 본적 격으로 사용해 보지는 않았다.
그러던 중 간단하게 2명이 프로젝트를 온라인에서 진행한 적이 있었다. 그때에는 2명이라서 많은 문제가 생기지 않았다. git은 별로 어렵지 않다는 생각을 가지게 되었다.
그러던 중 git을 활용해서 10명 내외의 프로젝트를 할 일이 생겼다. git에 대한 사용법을 먼저 익혀 프로젝트 인원들에게 전파해야 했기 때문에 git을 어떻게 하면 쉽게 접근 할 수 있을지 무척 많이 고민했었다.
처음에는 git을 SVN처럼 활용했었는데, 그러다 보니 서로 소스가 사라지는 현상이 발생하는 듯 적지 않은 문제가 발생했었다.
그리고 대부분의 문제를 해결하고 프로젝트는 끝났지만, git에 대한 고민은 좀 더 깊어졌다.
이 책을 보면서 그동안 고민했던 문제들에 대해서 하나씩 해결해 나가는 느낌이다. git에 대해서 챕터 첫 장에 quick guide를 통해서 간단하게 정리해 주고, 실습해서 git에 대해서 쉽게 정리하게 해 준다. 책 제목처럼 교과서라는 느낌을 확 주는 책이다.
git에 대해서 쉽게 알고 싶은 분들은 이 책을 보시는 것을 추천한다.
Git이라면 워낙 유명하니 개발자라면 모두 알만할 것이다.
하지만 5년 동안 한 회사에서 다닌 나로서는 회사에서 git을 쓰지 않고 svn만 썼었다.
회사에서 svn만 썼기 때문에 나 또한 git은 알고 있었지만 써보지를 못했다.
하지만 새 프로젝트를 하면서 git과 git hub의 필요성을 느껴서 좋은 기회가 되어 위 책을 보게 되었다.
위 책은 확실히 교과서라는 이름 그대로 git의 개념부터 처음 사용하는 유저를 위한 OS 별 설치 방법, 사용방법까지 모든 내용이 정리되어 있었다.
목차를 세분화하여 명령어 별로 사용법을 자세히 안내해 주어 처음 사용하는 유저도 손쉽게 실습하면서 공부할 수 있었다.
책이 얇고 중요한 부분만 잘 정리되어 있어서 실습하면서 공부하는데 적당한 분량인 것 같다.
명령어 위주로 정리되어 이따 보니 비 개발자에게는 어려운 부분이 될 수 있는 것 같지만 반복해서 명령어를 실습하다 보면 손쉽게 배울 수 있을 것 같다.
git을 안 쓰고 있었던 개발자들도 'git 교과서'만 있다면 손쉽게 프로젝트에 활용할 수 있을 것 같다.
Git을 이용해 소스 코드를 관리하면서 업무를 진행하고 있지만
항상 체계적인 학습을 하지 못해 어려움을 겪어 왔습니다.
머릿속에 마인드 맵을 그려서 정리하고 싶은데 그럴만한 책이 없는 와중에
딱 적합한 책을 만나게 되었네요.
바로 [Git 교과서] 라는 책을 만나면서 머릿속에 복잡한 지식을 체계적으로
정리해 나아갈 수 있는 계기가 되어서 이책의 좋은 및 아쉬운 점을 소개하고자 합니다.
[좋은 점]
- Git을 처음 접하는 사용자에게 최대한 쉽게 그림을 통해 설명함으로 써 이해하기 쉽다.
- 다른 책들은 보통 merge명령어를 다루는 편이나 좀 더 실무적인 관점 rebase 명령어 사용법에 대해서 다루고 있어서 유용하다.
- 브랜치 개념과 태그 개념이 처음 접하는 사람에게는 혼돈을 줄 수 있는 개념인데 명확한 설명을 통해 이해하기 쉬웠다.
- Git의 고급 기능 중 refs개념에 대해 설명 해주고 있어서 좀 더 깊은 지식을 습득 할 수 있었다.
[아쉬운 점]
- 복제 시 http url 뿐만 아니라 ssh를 통한 복제도 진행하게 되는데 ssh key등록 및 예제는 생략되어 있어 아쉽다.
- Git Commit 옵션 중 가장 많이 사용되는 amend 옵션에 대한 설명이 없어서 아쉽다.
해당 책을 통해 느낀 총 평은 Git을 입문하시려는 분들에게 체계적으로 학습 할수 있는 "정석"이라는 표현을
하고 싶을 정도로 추천드립니다.