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

Section 11.6: .gitignore 설정에 의해 ignore 처리된 파일들의 목록 확인하기

[ alias ] ignored = ! git ls-files --others --ignored --exclude-standard --directory \ && git ls-files --others -i --exclude-standard

위 명령어 수행시 하나의 줄에 하나의 파일을 표시하게 되며, 디렉토리들만 표시하기 위해서는 grep 을 이용할 수 있다:

$ git ignored | grep '/$' .yardoc/ doc/

또한 항목들의 수를 세는 것도 가능하다:

~$ git ignored | wc -l 199811 # oops, my home directory is getting crowded

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

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

Section 11.5: 브랜치를 그래프 형태로 예쁘게 나타내어 로그 출력하기

[alias] logp=log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short lg = log --graph --date-order --first-parent \ --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %C(green)(%ad) %C(bold cyan)<%an>%Creset' lgb = log --graph --date-order --branches --first-parent \ --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %C(green)(%ad) %C(bold cyan)<%an>%Creset' lga = log --graph --date-order --all \ --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %C(green)(%ad) %C(bold cyan)<%an>%Creset'

위 예제에서 사용된 --pretty 서식의 옵션들과 placeholder 들에 대한 설명은 아래를 참고하라 (전체 리스트는 git help log 를 통해 확인할 수 있다)

옵션 / placeholder 설명
--graph 커밋들을 트리 형태로 표시한다
--date-order 가능한 경우 커밋 타임스탬프 값 순서로 표시한다
--first-parent 머지 커밋이 있을 경우 해당 커밋의 첫번째 부모 브랜치 로그 내역만 표시한다
--branches 모든 분기된 로컬 브랜치들의 로그까지 함께 표시한다 (기본적으로는, 오직 현재 브랜치의 로그만 표시된다)
--all 모든 로컬 및 원격 브랜치의 로그를 표시한다
%h 축약된 버전의 커밋 hash
%ad Date stamp (작성 기준)
%C(auto) [color] 섹션에 정의된 색상을 사용한다
%Creset 색상을 초기화한다
%d ref (커밋을 가리키는 로컬 및 원격 브랜치 혹은 태그 등) 의 이름
%s 커밋 메시지
%ad 작성 날짜 (--date 옵션으로 기술된 날짜를 따른다) (커밋 날짜를 따르지 않는다)
%an 작성자 이름 (커미터 이름을 위해서는 %cn 을 이용한다)

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

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

Section 11.4: 추적(track) 중인 파일을 일시적으로 ignore 처리하기

(alias 에 파일 이름을 파라미터로 넘기는 방식으로) 특정 파일을 일시적으로 ignore 처리하기 위해서는 다음과 같은 alias 를 만들어 놓는다:

unwatch = update-index --assume-unchanged

일시적으로 ignore 처리된 파일을 다시 추적(track) 하도록 설정하기 위한 alias 는 다음과 같이 만들 수 있다:

watch = update-index --no-assume-unchanged

현재 일시적으로 ignore 처리된 모든 파일들의 목록을 나열하기 위해서는 다음과 같은 alias 를 만들어 놓는다:

unwatched = "!git ls-files -v | grep '^[[:lower:]]'"

ignore 처리된 파일들을 모두 다시 track 하도록 설정하기 위한 alias 는 다음과 같이 만들 수 있다:

watchall = "!git unwatched | xargs -L 1 -I % sh -c 'git watch `echo % | cut -c 2-`'"

위 alias 들을 실제 사용하는 예제는 아래와 같다:

git unwatch my_file.txt git watch my_file.txt git unwatched git watchall

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

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

Section 11.3: 고급 별칭(alias)들

git 의 alias 는 선언시에 ! 를 앞에 붙임으로써 git 명령어 외의 명령어들과 전체 sh shell 의 문법까지도 사용할 수가 있다.

~/.gitconfig 파일에 다음과 같이 입력한다:

[alias] temp = !git add -A && git commit -m "Temp"

이러한 ! 를 접두어로 하는 alias 선언에서 전체 shell 문법이 사용가능하다는 것은 커맨드라인상의 파라미터 등을 활용하는 shell function 을 통해 다양하고도 더욱 복잡한 alias 기능을 만들 수 있다는 것을 의미한다:

[alias] ignore = "!f() { echo $1 >> .gitignore; }; f"

위 alias 예제는 f 라는 이름의 함수를 선언하며, 실행시 alias 에 전달되는 모든 파라미터들을 해당 함수에서 사용 가능하도록 한다. 만약 git ignore .tmp/ 와 같은 명령을 실행한다면, 사용자의 .gitignore 파일에 ".tmp/" 가 추가될 것이다.

사실, 이렇듯 git 이 $1, $2, 등의 변수를 제공해 주어 사용자가 이를 위해 따로 특별한 함수를 선언할 필요가 없다는 점은 매우 편리하다. (그러나 alias 선언에서 실제 이러한 변수들을 사용한다 하더라도, git 이 명령줄 끝에 파라미터를 추가할 것이기 때문에 가장 마지막에 더미 커맨드를 추가해야 한다는 점을 염두에 두어야 한다.)

또한 이렇게 ! 를 접두어로 하는 alias 들을 실행시, 현재 디렉토리는 더 깊이 들어가 있을지라도 명령 실행은 checkout 된 git 저장소의 루트 디렉토리에서 실행될 것이라는 점에 유의하라. 이러한 특성을 이용하면 저장소의 루트 디렉토리에서 명령을 실행하고자 할때 cd 를 통해 디렉토리를 명시적으로 이동하지 않아도 되어 편리하다.

[alias] ignore = "! echo $1 >> .gitignore"

역주: 위 예제 실행시 이전 단락에서 설명한 것처럼 $1 에 해당하는 파라미터가 명령줄 끝에 붙게되어 실제 .gitignore 에 파라미터가 반복되어 추가되는 것을 확인할 수 있습니다.

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

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

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

아래와 같이 --get-regexp 옵션을 이용하여 기존 alias 들의 전체 목록을 표시할 수 있다:

$ git config --get-regexp '^alias\.'

alias 검색하기

특정 alias 를 검색하기 위해서는, 사용자의 .gitconfig 파일을 열어 [alias] 부분에 아래 내용을 추가한다:

aliases = !git config --list | grep ^alias\\. | cut -c 7- | grep -Ei --color \"$1\" "#"

이후, 아래와 같이 aliases 명령을 이용할 수 있다:

git aliases - 전체 alias 들의 목록을 표시한다 git aliases commit - "commit" 문자열을 포함하는 alias 를 검색한다

역주: git aliases 실행시 "grep: bad regex '': empty (sub)expression" 오류가 발생하는 경우, \"$1\" 부분을 \".*$1\" 로 변경하면 정상 동작합니다.

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

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

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

git 에서 별칭(alias) 를 생성하는 방법에는 두가지가 있다:

  • ~/.gitconfig 파일에 기술한다:

    [alias] ci = commit st = status co = checkout
  • 커맨드 라인에서 명령어를 입력한다:

    git config --global alias.ci "commit" git config --global alias.st "status" git config --global alias.co "checkout"

위 예제의 alias 가 생성된 이후에는 다음과 같이 입력할 수 있다:

  • git commit 대신에 git ci 를,
  • git status 대신에 git st 를,
  • git checkout 대신에 git st

일반적인 git 명령어들과 마찬가지로, alias 역시 해당 명령어의 옵션과 조합하여 사용할 수 있다. 다음 예제를 확인하라:

git ci -m "Commit message..." git co -b feature-42

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

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

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

만약 커밋 작성시 작성자 정보가 잘못되어 있었다면, 해당 정보를 갱신한 후 커밋을 수정할 수 있다.

git config user.name "Full Name" git config user.email "email@example.com" git commit --amend --reset-author

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

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

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

기존 커밋의 시간 정보를 변경하기 위해서는 아래와 같이 수행한다.

git commit --amend --date="Thu Jul 28 11:30 2016 -0400"

혹은 아래와 같이 기술할 수도 있다.

git commit --amend --date="now"

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

반응형

+ Recent posts