본 문서는 Git Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.
Contents
Chapter 1: Git 시작하기
Section 1.1: 첫번째 저장소 (repository) 를 만든 후, 파일을 add 하고 commit 하기
Section 1.4: 사용자 이름과 이메일 주소 설정하기
Section 1.5: upstream 원격 저장소 설정하기
Chapter 2: Git history 둘러보기
Section 2.6: 커밋 목록을 작성자별로 그룹화하여 나열하기
Section 2.7: git log 내용 중 커밋 문자열 검색하기
Section 2.8: 파일 내에서 라인 수 기준으로 특정 범위에 해당하는 변경 로그 표시하기
Section 2.10: 로그 목록에 수정 내용을 포함하여 조회하기
Section 2.11: 로그에서 수정된 파일 정보 표시하기
Section 2.13: 두 브랜치 사이의 로그 확인하기
Section 2.14: 커미터 이름과 커밋의 (현재로부터의) 시간 정보를 한줄에 표시하기
Chapter 3: 원격 저장소에서 사용하기
Section 3.2: Git 원격 저장소의 URL 변경하기
Section 3.3: 현재 등록되어 있는 원격 저장소들을 나열하기
Section 3.4: 원격 저장소에서 이미 삭제된 브랜치들의 로컬 사본 정리하기
Section 3.5: Upstream 저장소로부터 변경 사항을 업데이트하기
Section 3.8: 새로운 브랜치에 Upstream 정보 설정하기
Section 3.11: 특정 원격 저장소에 대한 정보 표시하기
Chapter 4: Staging 하기
Section 4.1: 파일들의 모든 변경 내역을 Staging 하기
Section 4.2: 변경 사항이 포함된 파일을 unstage 하기
Section 4.3: 변경 내역을 조각(hunk) 단위로 추가(add) 하기
Section 4.4: 대화형(Interactive) add
Section 4.5: stage 된 변경 내역 확인하기
Section 4.7: 파일을 삭제하고 삭제 내역을 stage 영역에 추가하기
Chapter 5: 파일들과 폴더들이 Git 에 포함되지 않도록 (ignore) 설정하기
Section 5.1: .gitignore 파일을 이용하여 파일과 디렉토리를 ignore 처리하기
Section 5.2: 특정 파일이 ignore 처리되어 있는지 확인하기
Section 5.3: .gitignore 파일에서 예외처리하기
Section 5.4: 글로벌 .gitignore 파일 활용하기
Section 5.5: Git 저장소에 이미 커밋 되어 있는 파일을 ignore 처리하기
Section 5.6: 규칙을 커밋하지 않고 저장소 내의 특정 파일들을 ignore 처리하기 (.git/info/exclude)
Section 5.7: 현재 시점 이후의 특정 파일 변경사항들을 ignore 처리하기 (파일을 제거하지 않고)
Section 5.8: 특정 파일을 모든 서브디렉토리에서 ignore 처리하기노초코
Section 5.9: 미리 만들어진 .gitignore 템플릿 사용하기
Section 5.10: 서브디렉토리의 파일들 ignore 처리하기 (다중 .gitignore 파일 사용)
Section 5.12: .gitignore 파일에 의해 ignore 처리된 파일들 검색하기
Section 5.13: 파일 내의 일부분만 ignore 처리하기
Section 5.14: 변경사항이 이미 추적되고 있는 (tracked) 파일의 변경 사항 ignore 처리하기
Section 5.15: .gitignore 에 추가하기 전에 이미 커밋되어 있던 파일들 정리하기
Chapter 6: Git Diff
Section 6.1: 현재 작업 디렉토리 내의 변경사항 표시하기
Section 6.2: 두 커밋 사이의 변경 내역 확인하기
Section 6.3: stage 된 변경 내역 확인하기
Section 6.5: stage 된 변경내역과 stage 되지 않은 변경내역 모두 표시하기
Section 6.6: 특정 파일이나 디렉토리에 대해 변경사항 출력하기
Section 6.7: 변경된 라인 목록을 단어 단위 변경 형식으로 보기
Section 6.8: 현재 커밋과 이전 커밋 사이의 차이점 표시하기
Section 6.9: patch 명령어와 호환되는 diff 결과물 생성하기
Section 6.10: 두 커밋 혹은 두 브랜치 사이의 차이점 확인하기
Section 6.11: meld 툴을 이용하여 작업 디렉토리 내의 모든 수정사항을 확인하기
Section 6.12: UTF-16 형식으로 인코딩된 파일들과 plist 바이너리 파일들의 변경 내역 확인하기
Chapter 7: 작업 되돌리기
Section 7.6: 일련의 커밋들을 한꺼번에 되돌리거나 다시 적용하기
Chapter 8: Merge 하기
Section 8.2: 이미 merge 완료된 원격 브랜치들 찾기
Section 8.3: 진행중이던 merge 작업 취소하기
Section 8.4: Merge 를 커밋을 생성하여 수행하기
Section 8.5: merge 시에 특정 한쪽의 변경사항만 반영하기
Section 8.6: 하나의 브랜치를 다른 브랜치로 merge 하기
Chapter 9: Submodule 사용하기
Section 9.1: submodule 을 포함하는 git 저장소를 clone 하기
Section 9.2: submodule 갱신 (update) 하기
Section 9.4: submodule 로 하여금 특정 브랜치를 추적 (follow) 하도록 하기
Section 9.5: submodule 위치 변경하기
Chapter 10: 커밋하기
Section 10.1: 변경사항을 stage 하고 커밋하기
Section 10.5: 변경 사항들을 곧바로 커밋하기
Section 10.6: 커밋에 포함될 내용을 선택적으로 stage 하기
Section 10.7: 빈 (empty) 커밋 생성하기
Section 10.8: 다른 사람을 대신하여 커밋하기
Section 10.10: 특정 파일들의 변경사항을 커밋하기
Section 10.11: 특정 날짜 정보를 커밋에 포함시키기
Section 10.12: 커밋의 시간 정보를 수정(amend) 하기
Section 10.13: 커밋의 작성자 정보를 수정(amend) 하기
Chapter 11: 별칭 (alias) 사용하기
Section 11.2: 기존 별칭(alias) 들의 목록을 표시하거나 검색하기
Section 11.4: 추적(track) 중인 파일을 일시적으로 ignore 처리하기
Section 11.5: 브랜치를 그래프 형태로 예쁘게 나타내어 로그 출력하기
Section 11.6: .gitignore 설정에 의해 ignore 처리된 파일들의 목록 확인하기
Section 11.7: 선형적인 history 를 유지하면서 코드 업데이트하기
Section 11.8: stage 된 파일들을 unstage 시키기
Chapter 12: Rebase 하기
Section 12.1: 로컬 브랜치들 rebase 하기
Section 12.2: Rebase 시 "ours" 와 "theirs", 로컬과 원격 개념 이해하기
Section 12.3: 대화형(interactive) rebase
Section 12.4: 최초 (initial) 커밋으로부터 rebase 하기
Section 12.5: rebase 시 자동 stash 설정하기
Section 12.6: rebase 작업 시 모든 커밋들에 대해 테스트를 수행하기
Section 12.7: 코드 리뷰를 위한 rebase 수행하기
Section 12.8: 대화형 (interactive) rebase 작업 취소하기
Section 12.9: git-pull 로 하여금 자동으로 merge 대신 rebase 를 수행하도록 설정하기
Section 12.10: rebase 후에 push 수행하기
Chapter 13: 환경 설정 (configuration)
Section 13.1: Git 에서 사용할 편집기 설정하기
Section 13.3: 현재의 환경 설정값들을 조회하고 편집하기
Section 13.4: 사용자 이름과 이메일 주소 설정하기
Section 13.5: 복수개의 사용자 이름과 이메일 주소 이용하기
Section 13.6: 복수의 git 환경 설정값 이용하기
Section 13.7: 줄바꿈 (line ending) 종류 설정하기
Section 13.8: 하나의 명령어에 대해서만 환경 설정값 적용하기
Chapter 14: 브랜치 활용하기
Section 14.1: 새로운 브랜치를 만들고 checkout 하기
Section 14.4: 직전에 사용하던 브랜치로 빠르게 전환하기
Section 14.5: 원격 브랜치를 추적(tracking) 하는 새로운 브랜치 checkout 하기
Section 14.7: 고아(orphan) 브랜치 (부모 커밋이 없는 브랜치) 생성하기
Section 14.10: 브랜치를 원격 저장소에 push 하기
Section 14.11: 현재 브랜치의 HEAD 를 특정 커밋으로 이동시키기
Chapter 15: Rev-List 이용하기
Section 15.1: master 에는 있지만 origin/master 에는 존재하지 않는 커밋들 검색하기
Chapter 16: Squash 하기
Section 16.1: rebase 하지 않으면서 최근 몇개의 커밋들을 squash 하기
Section 16.2: merge 수행 중에 squash 하기
Section 16.3: rebase 수행 중에 squash 하기
Section 16.4: 자동 squash (autosquash) / 자동 fixup 기능 사용하기
Section 16.5: 자동 stash (autosquash): rebase 시에 squash 시킬 코드 커밋하기
Chapter 17:cherry-pick 하기
Section 17.1: 하나의 브랜치 내의 특정 커밋을 다른 브랜치에 복사하기
Section 17.2: 하나의 브랜치 내의 특정 범위 커밋들을 다른 브랜치에 복사하기
Section 17.3: cherry-pick 작업이 필요할지 확인하기
Section 17.4: upstream 에 아직 적용되지 않은 커밋들 검색하기
Chapter 18: 복구 (Recover) 하기
Section 18.2: git stash 한 작업 내역 복구하기
Section 18.4: 파일을 삭제 후 커밋한 경우 해당 파일 다시 복원하기
Section 18.5: 특정 파일의 예전 버전을 복원하기
Chapter 19: Git Clean
Section 19.1: 대화형 모드로 Clean 수행하기
Section 19.2: 추적중이 아닌 (untracked) 파일들 강제 삭제하기
Section 19.3: ignore 처리된 파일들 삭제하기
Section 19.4: 추적중이 아닌 (untracked) 디렉토리들 정리하기
Chapter 20: .gitattributes 파일 활용하기
Section 20.1: 줄바꿈 (line ending) 종류 자동으로 표준화하기
Section 20.3: .gitattribute 템플릿 이용하기
Section 20.4: 줄바꿈 (line ending) 표준화 기능 비활성화하기
Chapter 21: .mailmap 파일: 기여자 (contributor) 와 이메일 별칭 연결하기
Section 21.1: shortlog 에서 커밋 갯수를 보여줄 때 기여자들을 별칭(alias)을 통해 병합하기
Chapter 22: 다양한 작업 흐름 (workflow) 알아보기
Section 22.1: 중앙 집중식의 작업 흐름 (workflow)
Section 22.2: Gitflow 작업 흐름 (workflow)
Section 22.3: Feature 브랜치 작업 흐름 (workflow)
Section 22.5: Fork 기반의 작업 흐름 (Forking Workflow)
Chapter 23: Pull 하기
Section 23.1: 변경 사항들을 로컬 저장소로 pull 해오기
Section 23.2: 로컬 변경사항이 있는 경우 pull 하기
Section 23.3: pull 작업이 로컬 변경사항들을 덮어쓰도록 하기
Section 23.4: 원격 저장소로부터 코드 pull 해오기
Section 23.5: 선형적인 (linear) history 를 유지하면서 pull 하기
Section 23.6: pull 수행중의 "권한없음(permission denied)" 에러
Chapter 24: Hook 사용하기
Section 24.2: 커밋 전에 자동으로 Maven (혹은 다른 빌드 시스템) 의 빌드 검증하기
Section 24.3: 특정 push 요청들을 자동으로 다른 원격 저장소로 전달(forward) 하기
Section 24.6: Post-checkout hook
Section 24.7: Post-commit hook
Section 24.8: Post-receive hook
Section 24.10: Prepare-commit-msg hook
Section 24.11: Pre-rebase hook
Section 24.12: Pre-receive hook
Chapter 25: 저장소 clone 하기
Section 25.1: Shallow Clone 하기
Section 25.4: 재귀적으로 (recursively) Clone 하기
Section 25.5: Proxy 사용 환경에서 Clone 하기
Chapter 26: Stash 하기
Section 26.1: Stash 작업이란 무엇인가?
Section 26.3: stash 를 적용하고 삭제하기
Section 26.4: stash 를 삭제하지 않고 적용하기
Section 26.7: 저장된 stash 들의 목록 확인하기
Section 26.8: 작업 중이던 내용 (work in progress) 을 다른 브랜치로 이동시키기
Section 26.10: checkout 을 이용하여 stash 의 일부분만 적용하기
Section 26.11: stash 되어있는 예전 변경사항들을 복원하기
Chapter 27: Subtree 사용하기
Section 27.1: Subtree 를 생성 / Pull / Backport 하기
Chapter 28: 이름 변경하기
Section 28.2: 로컬 및 원격 브랜치 이름 변경하기
Chapter 29: Push 하기
Section 29.1: 특정 object 를 원격 브랜치로 push 하기
Section 29.3: 강제 (force) push 수행하기
Chapter 30: 내부 구조 파악하기
Section 30.5: Commit Object 란?
Section 30.8: 새로운 commit 객체 생성
Chapter 31: git-tfs 사용하기
Section 31.1: git-tfs clone 수행하기
Section 31.2: bare git repository 로부터 git-tfs clone 수행하기
Section 31.3: Chocolatey 를 통해 git-tfs 설치하기
Section 31.4: git-tfs 를 통해 Check In 하기
Section 31.5: git-tfs 로 push 하기
Chapter 32: Git 에서의 빈 디렉토리
Section 32.1: Git 은 디렉토리를 추적하지 (track) 않는다
Chapter 33: git-svn 사용하기
Section 33.1: SVN 저장소를 clone 하기
Section 33.2: 로컬 변경사항을 SVN 에 push 하기
Section 33.3: 로컬에서 작업하기 (git-svn 환경)
Section 33.4: SVN 으로부터 최신 변경사항을 가져오기
Section 33.5: 빈 디렉토리 다루기 (git-svn 환경)
Chapter 34: Archive
Section 34.1: 저장소에 대한 archive 생성하기
Section 34.2: 추가적인 디렉토리 경로를 덧붙여서 archive 생성하기
Section 34.3: 특정 branch, revision, tag 혹은 디렉토리를 대상으로 하는 archive 생성하기
Chapter 35: filter-branch 를 이용하여 history 재작성하기
Section 35.1: filter-branch 로 커밋들의 작성자 정보 변경하기
Section 35.2: filter-branch 로 정보를 작성자 정보와 동일하게 수정하기
Chapter 36: Git 으로 이주 (migrating) 하기
Section 36.2: Atlassian 의 변환 툴을 이용하여 SVN 에서 Git 으로 이주(migrate) 하기
Section 36.3: Mercurial 에서 Git 으로 이주(migrate) 하기
Section 36.4: Team Foundation Version Control (TFVC) 에서 Git 으로 이주(migrate) 하기
Section 36.5: svn2git 을 이용하여 SVN 에서 Git 으로 이주(migrate) 하기
Chapter 37: Show 사용하기
Chapter 38: Merge conflict 해결하기
Section 38.1: Merge conflict 수동 해결하기
Chapter 39: Bundle 사용하기
Section 39.1: 로컬 머신에서 git bundle 을 생성한 후 다른 곳에서 사용하기
Chapter 40: Gitk 를 활용하여 커밋 history 더욱 시각적으로 표시하기
Section 40.1: 특정 파일에 대한 커밋 history 를 확인하기 (gitk 이용)
Section 40.2: 두 커밋 사이의 모든 커밋들을 출력하기 (gitk 이용)
Section 40.3: 특정 버전 tag 이후로의 커밋들 표시하기 (gitk 이용)
Chapter 41: Bisect 기법을 통해 문제를 발생시킨 커밋 찾기
Section 41.1: 이진 검색 (git bisect 를 이용하여 결함을 유발하는 커밋 찾기)
Chapter 42: Blame 하기
Section 42.1: 특정 범위의 열에 대해서만 git blame 수행하기
Section 42.2: 누가 파일을 변경했는지를 확인하기
Section 42.3: 파일 내 각 열을 마지막으로 변경한 커밋 표시하기
Section 42.4: 공백 문자로만 이루어진 변경사항은 무시하고 blame 하기
Chapter 43: Git 의 revision 관련 문법 (syntax)
Section 43.1: 객체 이름을 통해 revision 정보를 표시하기
Section 43.2: Symbolic ref 이름들: 브랜치, tag, 원격 추적 브랜치
Section 43.3: revision 의 기본값 : HEAD
Section 43.6: 추적 중인 (tracked) / upstream 브랜치:
Section 43.7: 커밋 ancestry chain:
Section 43.8: 브랜치와 tag 를 역참조 (de-reference) 하기:
Section 43.9: 검색식에 부합하는 가장 최근 커밋 찾기:
Chapter 44: Worktree
Chapter 45: Git Remote
Section 45.2: Git 저장소의 원격 URL 변경하기
Section 45.5: 원격 저장소에 대한 더 많은 정보를 표시하기
Section 45.6: 원격 저장소를 가리키는 이름 변경하기
Chapter 46: Git Large File Storage (LFS) 사용하기
Section 46.1: Git LFS 에 별도로 저장될 파일 타입들 지정하기
Section 46.2: Clone 들에게도 동일하게 적용될 LFS 옵션값 설정하기
Chapter 47: Git Patch
Chapter 48: Git 통계내기
Section 48.1: 개발자별 코드 라인 수 측정하기
Section 48.2: 브랜치 목록을 나열하고 각 브랜치의 마지막 수정 날짜 표시하기
Section 48.5: 브랜치 내의 총 커밋 갯수 측정하기
Section 48.6: 모든 커밋들의 목록을 더 보기 좋은 형태로 나열하기
Section 48.7: 컴퓨터 내에 존재하는 모든 로컬 git 저장소 검색하기
Section 48.8: 작성자별 커밋 갯수의 총 합 출력하기
Chapter 49: git send-email 사용하기
Section 49.1: Gmail 계정을 통해 git send-email 사용하기
Section 49.2: git send-email 작성하기
Chapter 50: Git GUI 클라이언트들
Chapter 51: Reflog - git log 에 나타나지 않는 커밋 복구하기
Section 51.1: git reflog 를 이용해서 문제를 발생시킨 rebase 복구하기
Chapter 52: TortoiseGit
Section 52.1: TortoiseGit : 커밋들 squash 하기
Section 52.2: TortoiseGit : Assume unchanged 설정하기
Section 52.3: TortoiseGit : 파일 및 폴더를 ignore 처리하기
Section 52.4: TortoiseGit : Branch 생성하기
Chapter 53: 외부 merge / diff 도구 사용하기
Section 53.1: KDiff3 를 merge 도구로 설정하기
Section 53.2: KDiff3 를 diff 도구로 설정하기
Section 53.3: IntelliJ IDE 를 merge 도구로 설정하기 (윈도우즈 환경)
Section 53.4: IntelliJ IDE 를 diff 도구로 설정하기 (윈도우즈 환경)
Section 53.5: Beyond Compare 설정하기
Chapter 54: Reference 내의 객체 이름 변경하기
Section 54.1: Reference 내의 객체 이름 변경하기
Chapter 55: Ubuntu Bash 상에서 Git 브랜치 이름 표시하기
Chapter 56: Git Client-Side Hook 설정하기
Section 56.1: Git pre-push hook
Chapter 57: Git rerere 사용하기
Chapter 58: git 저장소 이름 변경하기
Chapter 59: Git 에서 Tag 사용하기
Section 59.1: 사용가능한 모든 태그들의 목록 표시하기
Section 59.2: Git 에서 태그를 생성하고 push 하기
Chapter 60: 로컬 및 원격 저장소 정리하기
Section 60.1: 원격에서 제거된 로컬 브랜치들 삭제하기
Chapter 61: diff-tree 사용하기
Section 61.1: 특정 커밋에서 변경된 파일들 확인하기
[출처] https://books.goalkicker.com/GitBook/ (CC BY-SA)
'번역 > Git Notes for Professionals' 카테고리의 다른 글
61.2: diff-tree 사용법 (0) | 2020.05.26 |
---|---|
61.1: 특정 커밋에서 변경된 파일들 확인하기 (0) | 2020.05.26 |
61: diff-tree 사용하기 (0) | 2020.05.25 |
60.1: 원격에서 제거된 로컬 브랜치들 삭제하기 (0) | 2020.05.20 |
59.2: Git 에서 태그를 생성하고 push 하기 (0) | 2020.05.20 |