GitNotes.Contents.md
본 문서는 Git Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

Contents

Chapter 1: Git 시작하기

Section 1.1: 첫번째 저장소 (repository) 를 만든 후, 파일을 add 하고 commit 하기

Section 1.2: 저장소를 Clone 하기

Section 1.3: 코드 공유하기

Section 1.4: 사용자 이름과 이메일 주소 설정하기

Section 1.5: upstream 원격 저장소 설정하기

Section 1.6: 특정 명령어에 대해 알아보기

Section 1.7: Git 과 SSH 연동하기

Section 1.8: Git 설치하기

Chapter 2: Git history 둘러보기

Section 2.1: "일반적인" Git 로그

Section 2.2: 로그를 더 예쁘게 출력하기

Section 2.3: 로그에 색상입히기

Section 2.4: 로그 내용을 한줄씩만 표시하기

Section 2.5: 로그 검색하기

Section 2.6: 커밋 목록을 작성자별로 그룹화하여 나열하기

Section 2.7: git log 내용 중 커밋 문자열 검색하기

Section 2.8: 파일 내에서 라인 수 기준으로 특정 범위에 해당하는 변경 로그 표시하기

Section 2.9: 로그 필터링하기

Section 2.10: 로그 목록에 수정 내용을 포함하여 조회하기

Section 2.11: 로그에서 수정된 파일 정보 표시하기

Section 2.12: 커밋 하나의 내용 표시하기

Section 2.13: 두 브랜치 사이의 로그 확인하기

Section 2.14: 커미터 이름과 커밋의 (현재로부터의) 시간 정보를 한줄에 표시하기

Chapter 3: 원격 저장소에서 사용하기

Section 3.1: 원격 저장소의 브랜치 삭제하기

Section 3.2: Git 원격 저장소의 URL 변경하기

Section 3.3: 현재 등록되어 있는 원격 저장소들을 나열하기

Section 3.4: 원격 저장소에서 이미 삭제된 브랜치들의 로컬 사본 정리하기

Section 3.5: Upstream 저장소로부터 변경 사항을 업데이트하기

Section 3.6: ls-remote

Section 3.7: 새로운 원격 저장소 추가하기

Section 3.8: 새로운 브랜치에 Upstream 정보 설정하기

Section 3.9: 원격 브랜치에 push 하기

Section 3.10: 원격 저장소 이름 변경하기

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.6: 파일을 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.11: 비어있는 폴더 커밋하기

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.4: 브랜치간의 차이점 비교하기

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.1: 이전 커밋으로 되돌리기

Section 7.2: 변경 사항을 되돌리기

Section 7.3: reflog 활용하기

Section 7.4: merge 작업 되돌리기

Section 7.5: 기존 커밋들 되돌리기

Section 7.6: 일련의 커밋들을 한꺼번에 되돌리거나 다시 적용하기

Chapter 8: Merge 하기

Section 8.1: 자동으로 머지가 완료되는 경우

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.3: submodule 추가하기

Section 9.4: submodule 로 하여금 특정 브랜치를 추적 (follow) 하도록 하기

Section 9.5: submodule 위치 변경하기

Section 9.6: submodule 제거하기

Chapter 10: 커밋하기

Section 10.1: 변경사항을 stage 하고 커밋하기

Section 10.2: 커밋 메시지 잘 작성하기

Section 10.3: 커밋 수정(amend) 하기

Section 10.4: 편집기를 열지 않고 커밋하기

Section 10.5: 변경 사항들을 곧바로 커밋하기

Section 10.6: 커밋에 포함될 내용을 선택적으로 stage 하기

Section 10.7: 빈 (empty) 커밋 생성하기

Section 10.8: 다른 사람을 대신하여 커밋하기

Section 10.9: 커밋에 GPG 서명 하기

Section 10.10: 특정 파일들의 변경사항을 커밋하기

Section 10.11: 특정 날짜 정보를 커밋에 포함시키기

Section 10.12: 커밋의 시간 정보를 수정(amend) 하기

Section 10.13: 커밋의 작성자 정보를 수정(amend) 하기

Chapter 11: 별칭 (alias) 사용하기

Section 11.1: 간단한 별칭(alias)들

Section 11.2: 기존 별칭(alias) 들의 목록을 표시하거나 검색하기

Section 11.3: 고급 별칭(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.2: 명령어 오타 자동 교정하기

Section 13.3: 현재의 환경 설정값들을 조회하고 편집하기

Section 13.4: 사용자 이름과 이메일 주소 설정하기

Section 13.5: 복수개의 사용자 이름과 이메일 주소 이용하기

Section 13.6: 복수의 git 환경 설정값 이용하기

Section 13.7: 줄바꿈 (line ending) 종류 설정하기

Section 13.8: 하나의 명령어에 대해서만 환경 설정값 적용하기

Section 13.9: 프록시 설정하기

Chapter 14: 브랜치 활용하기

Section 14.1: 새로운 브랜치를 만들고 checkout 하기

Section 14.2: 브랜치들의 목록 나열하기

Section 14.3: 원격 브랜치 삭제하기

Section 14.4: 직전에 사용하던 브랜치로 빠르게 전환하기

Section 14.5: 원격 브랜치를 추적(tracking) 하는 새로운 브랜치 checkout 하기

Section 14.6: 로컬에서 브랜치 삭제하기

Section 14.7: 고아(orphan) 브랜치 (부모 커밋이 없는 브랜치) 생성하기

Section 14.8: 브랜치 이름 변경하기

Section 14.9: 브랜치 검색하기

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.1: reset 작업 복구하기

Section 18.2: git stash 한 작업 내역 복구하기

Section 18.3: 유실된 커밋 복원하기

Section 18.4: 파일을 삭제 후 커밋한 경우 해당 파일 다시 복원하기

Section 18.5: 특정 파일의 예전 버전을 복원하기

Section 18.6: 삭제된 브랜치 복구하기

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.2: Binary 파일 식별하기

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.4: GitHub Flow

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.1: Pre-push hook

Section 24.2: 커밋 전에 자동으로 Maven (혹은 다른 빌드 시스템) 의 빌드 검증하기

Section 24.3: 특정 push 요청들을 자동으로 다른 원격 저장소로 전달(forward) 하기

Section 24.4: Commit-msg hook

Section 24.5: 로컬 hook 들의 종류

Section 24.6: Post-checkout hook

Section 24.7: Post-commit hook

Section 24.8: Post-receive hook

Section 24.9: Pre-commit hook

Section 24.10: Prepare-commit-msg hook

Section 24.11: Pre-rebase hook

Section 24.12: Pre-receive hook

Section 24.13: Update hook

Chapter 25: 저장소 clone 하기

Section 25.1: Shallow Clone 하기

Section 25.2: 일반적인 Clone 하기

Section 25.3: 특정 브랜치 Clone 하기

Section 25.4: 재귀적으로 (recursively) Clone 하기

Section 25.5: Proxy 사용 환경에서 Clone 하기

Chapter 26: Stash 하기

Section 26.1: Stash 작업이란 무엇인가?

Section 26.2: Stash 생성하기

Section 26.3: stash 를 적용하고 삭제하기

Section 26.4: stash 를 삭제하지 않고 적용하기

Section 26.5: stash 내용 표시하기

Section 26.6: 부분 stash 하기

Section 26.7: 저장된 stash 들의 목록 확인하기

Section 26.8: 작업 중이던 내용 (work in progress) 을 다른 브랜치로 이동시키기

Section 26.9: stash 제거하기

Section 26.10: checkout 을 이용하여 stash 의 일부분만 적용하기

Section 26.11: stash 되어있는 예전 변경사항들을 복원하기

Section 26.12: 대화형으로 stash 하기

Section 26.13: 삭제된 stash 복구하기

Chapter 27: Subtree 사용하기

Section 27.1: Subtree 를 생성 / Pull / Backport 하기

Chapter 28: 이름 변경하기

Section 28.1: 디렉토리 이름 변경하기

Section 28.2: 로컬 및 원격 브랜치 이름 변경하기

Section 28.3: 로컬 브랜치 이름 변경하기

Chapter 29: Push 하기

Section 29.1: 특정 object 를 원격 브랜치로 push 하기

Section 29.2: Push 작업

Section 29.3: 강제 (force) push 수행하기

Section 29.4: tag 를 push 하기

Section 29.5: 기본 push 동작 변경하기

Chapter 30: 내부 구조 파악하기

Section 30.1: Repo 란?

Section 30.2: Object 란?

Section 30.3: HEAD ref 란?

Section 30.4: Ref 란?

Section 30.5: Commit Object 란?

Section 30.6: Tree 객체란?

Section 30.7: Blob 객체란?

Section 30.8: 새로운 commit 객체 생성

Section 30.9: HEAD 이동시키기

Section 30.10: ref 들 이동시키기

Section 30.11: 새로운 ref 생성하기

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.1: SubGit

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 사용하기

Section 37.1: git 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.4: Reflog 참조자: @{}

Section 43.5: Reflog 참조자: @{}

Section 43.6: 추적 중인 (tracked) / upstream 브랜치: @{upstream}

Section 43.7: 커밋 ancestry chain: ^, ~, 등등

Section 43.8: 브랜치와 tag 를 역참조 (de-reference) 하기: ^0, ^{}

Section 43.9: 검색식에 부합하는 가장 최근 커밋 찾기: ^{/},confused

Chapter 44: Worktree

Section 44.1: worktree 사용하기

Section 44.2: Worktree 이동시키기

Chapter 45: Git Remote

Section 45.1: 원격 저장소들 표시하기

Section 45.2: Git 저장소의 원격 URL 변경하기

Section 45.3: 원격 저장소 정보 삭제하기

Section 45.4: 원격 저장소 정보 추가하기

Section 45.5: 원격 저장소에 대한 더 많은 정보를 표시하기

Section 45.6: 원격 저장소를 가리키는 이름 변경하기

Chapter 46: Git Large File Storage (LFS) 사용하기

Section 46.1: Git LFS 에 별도로 저장될 파일 타입들 지정하기

Section 46.2: Clone 들에게도 동일하게 적용될 LFS 옵션값 설정하기

Section 46.3: LFS 설치하기

Chapter 47: Git Patch

Section 47.1: 패치 파일 생성하기

Section 47.2: 패치 파일 적용하기

Chapter 48: Git 통계내기

Section 48.1: 개발자별 코드 라인 수 측정하기

Section 48.2: 브랜치 목록을 나열하고 각 브랜치의 마지막 수정 날짜 표시하기

Section 48.3: 개발자 별 커밋 수 측정하기

Section 48.4: 날짜별 커밋 수 측정하기

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 작성하기

Section 49.3: 이메일을 통해 패치 발송하기

Chapter 50: Git GUI 클라이언트들

Section 50.1: gitk 와 git-gui

Section 50.2: 기타 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

Section 56.2: 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: 특정 커밋에서 변경된 파일들 확인하기

Section 61.2: diff-tree 사용법

[출처] https://books.goalkicker.com/GitBook/ (CC BY-SA)

반응형
GitNotes.61-2.md
본 문서는 Git Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

Section 61.2: diff-tree 사용법

git diff-tree [--stdin] [-m] [-c] [--cc] [-s] [-v] [--pretty] [-t] [-r] [--root] [<common-diffoptions>] <tree-ish> [<tree-ish>] [<path>...]
파라미터 설명
-r 재귀적 (recursively) 으로 diff 를 수행한다
--root 최초 커밋 (initial commit) 도 /dev/null 와의 비교를 수행하여 결과에 포함시킨다

[출처] https://books.goalkicker.com/GitBook/ (CC BY-SA)

반응형
GitNotes.61-1.md
본 문서는 Git Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

Section 61.1: 특정 커밋에서 변경된 파일들 확인하기

git diff-tree --no-commit-id --name-only -r COMMIT_ID

[출처] https://books.goalkicker.com/GitBook/ (CC BY-SA)

반응형
GitNotes.61-0.md
본 문서는 Git Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

Chapter 61: diff-tree 사용하기

두개의 tree 객체 내의 blob 들에 대해 내용물과 모드 (mode) 상의 차이점을 비교한다.

일반적인 diff 옵션들

파라미터 설명
-z 각 줄이 NUL 로 끝나는 diff-raw 형식으로 출력한다.
-p patch 형식 (format) 으로 출력한다.
-u -p 와 동일한 옵션이다.
--patch-with-raw patch 형식과 diff-raw 형식 모두를 출력한다.
--stat 변경 내역대신 변경 통계 (diffstat) 정보만 출력한다.
--numstat 수치로 표현된 (numeric) 변경 통계 정보만 출력한다.
--patch-with-stat 변경 통계 정보를 먼저 출력하고 직후에 patch 형식으로 출력한다.
--name-only 변경된 파일들의 이름만 출력한다.
--name-status 변경된 파일들의 이름과 상태값을 표시한다.
--full-index index 표시 라인에 객체 이름 전체를 표시한다.
--abbrev=<n> diff-tree 헤더와 diff-raw 상의 객체 이름을 표시할 때 최초 n개의 문자만 출력한다.
-R 입력 파일 쌍(pair) 을 맞바꾼다.
-B 파일 전체의 내용이 완전히 변경된 경우, 변경 내역을 일부 삭제와 일부 추가의 쌍으로 분리한다.
-M 파일 이름 변경을 검출한다.
-C 복사된 파일을 검출한다.
--find-copies-harder 변경되지 않은 파일도 복사 검출 대상에 포함시킨다.
-l<n> 파일 이름변경/복사 검출 대상 확인을 <n> 개 이하로만 수행한다.
-O<file> <file> 에 기술된 순서대로 diff를 재정렬하여 출력한다.
-S 비교되는 파일 쌍 중에서 한쪽에서만 주어진 문자열이 존재하는 변경사항을 검색한다.
--pickaxe-all -S 옵션을 사용하여 검색이 성공한 경우 모든 파일들의 diff 를 출력한다.
-a --text 모든 파일들을 텍스트 파일로 간주한다.

[출처] https://books.goalkicker.com/GitBook/ (CC BY-SA)

반응형
GitNotes.60-1.md
본 문서는 Git Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

Section 60.1: 원격에서 제거된 로컬 브랜치들 삭제하기

삭제된 원격 브랜치 정보를 추적하기 위해서는 아래와 같이 입력한다.

git fetch -p

그런 다음 아래 명령을 입력한다.

git branch -vv

이제 어떤 브랜치들이 더이상 추적 (track) 되지 않고 있는지를 확인할 수 있다.

더 이상 추적되지 않는 브랜치들은 아래와 같이 'gone' 이라는 문자열이 추가된 형태로 표시될 것이다.

branch 12345e6 [origin/branch: gone] Fixed bug

이제 위 명령어들의 조합을 이용하여, git branch -vv 결과중에서 'gone' 을 포함하는 브랜치들을 검색하여 -d 옵션을 통해 삭제까지 수행할 수 있다

git fetch -p && git branch -vv | awk '/: gone]/{print $1}' | xargs git branch -d

[출처] https://books.goalkicker.com/GitBook/ (CC BY-SA)

반응형
GitNotes.59-2.md
본 문서는 Git Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

Section 59.2: Git 에서 태그를 생성하고 push 하기

태그 생성하기:

  • 현재 브랜치에 대해 태그를 생성하기:

    git tag <tag-name>

    위 명령은 사용자가 위치한 브랜치의 현재 상태에 대한 로컬 태그를 생성해 줄 것이다.

  • 특정 커밋에 대해 태그를 생성하기:

    git tag <tag-name> <commit-identifier>

    위 명령은 <commit-identifier> 에 대한 로컬 태그를 생성해 줄 것이다.

태그 push 하기:

  • 하나의 태그 push 하기:
    git push origin tag-name
  • 모든 태그들 한번에 push 하기
    git push origin --tags

[출처] https://books.goalkicker.com/GitBook/ (CC BY-SA)

반응형
GitNotes.59-1.md
본 문서는 Git Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

Section 59.1: 사용가능한 모든 태그들의 목록 표시하기

git tag 명령어를 통해 현재 사용 가능한 태그들의 목록을 확인할 수 있다:

$ git tag v0.1 v1.3

주의: 태그들은 알파벳 순으로 정렬되어 출력될 것이다.

아래와 같이 특정 패턴에 부합하는 태그들을 검색할수도 있다:

$ git tag -l "v1.8.5*" v1.8.5 v1.8.5-rc0 v1.8.5-rc1 v1.8.5-rc2 v1.8.5-rc3 v1.8.5.1 v1.8.5.2 v1.8.5.3 v1.8.5.4 v1.8.5.5

[출처] https://books.goalkicker.com/GitBook/ (CC BY-SA)

반응형
GitNotes.59-0.md
본 문서는 Git Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

Chapter 59: Git 에서 Tag 사용하기

다른 많은 버전 관리 시스템 (VCS - Version Control System) 들 처럼, Git 역시 history 상의 특정 지점을 중요 지점으로 태그를 붙일 수 있다.

많은 경우 사람들은 이 기능을 배포 지점 (release points - v1.0 등과 같은) 표시를 위해 사용하게 된다.

[출처] https://books.goalkicker.com/GitBook/ (CC BY-SA)

반응형

+ Recent posts