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

Section 47.1: 패치 파일 생성하기

패치 파일을 생성하기 위해서는, 아래와 같은 두가지 단계를 거치도록 한다.

  1. 수정사항을 작성하고 커밋한다.
  2. git format-patch <commit-reference> 명령어를 사용하여 <commit-reference> 이후의 (파라미터로 주어진 reference 는 포함하지 않는다) 모든 커밋들을 패치 파일로 변환한다.

예를 들어, 가장 최근의 두개의 커밋에 대한 패치 파일을 작성하고자 한다면:

git format-patch HEAD~~

위 명령어는 HEAD~~ 이후로의 각 커밋마다 하나씩, 아래와 같은 두개의 파일을 생성해 줄 것이다:

0001-hello_world.patch 0002-beginning.patch

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

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

Chapter 47: Git Patch

파라미터 설명
(<mbox>|<Maildir>)... 패치를 읽어올 mailbox 파일들의 목록을 지정한다. 이 파라미터가 생략된 경우, 표준 입력에서 패치를 읽어들이는 것으로 간주한다. 만약 파라미터로 디렉토리가 주어진 경우에는 해당 디렉토리를 Maildir 로 간주한다.
-s, --signoff 커밋 메시지에 사용자의 신원정보를 이용하여 committer 정보를 기술한 "Signed-off-by:" 행을 추가한다.
-q, --quiet 출력을 최소화한다. 작업 중 발생한 에러 메시지만 출력이 될 것이다.
-u, --utf8 git mailinfo 명령어를 내부적으로 실행 시 -u 파라미터를 사용하도록 한다. E-mail 로부터 추출한 커밋 로그 메시지가 UTF-8 인코딩으로 재구성될 것이다 (만약 프로젝트 내에서 선호하는 인코딩이 UTF-8 이 아닌 경우에는 환경 설정 변수값 i18n.commitencoding 을 통해 별도로 설정할 수 있다). --no-utf8 옵션을 사용하여 이 옵션을 무효화할 수 있다.
--no-utf8 git mailinfo 명령어를 내부적으로 실행 시 -n 파라미터를 사용하도록 한다.
-3, --3way 패치가 오류없이 (cleanly) 적용되지 않는 경우, 만약 패치 내에 적용하고자 하는 blob 의 식별 정보가 기록되어 있고 해당 blob 이 사용자의 로컬 환경에 존재한다면 3-way 머지로 문제를 해결하도록 한다.
--ignore-date, --ignore-space-change, --ignore-whitespace, --whitespace=<option>, -C<n>, -p<n>, --directory=<dir>, --exclude=<path>, --include=<path>, --reject 이 옵션들은 패치가 실제 git apply 를 통해 적용될 때 해당 명령어에 전달되는 옵션들이다.
--patch-format 기본적으로는 명령어 실행 시 패치의 서식 (format) 을 자동으로 검출하게 되어 있다. 이 옵션 사용 시, 이러한 자동 검출 과정을 생략하고 패치가 어떤 형식으로 해석되어야 하는지를 지정할 수 있다. 사용 가능한 서식의 종류로는 mbox, stgit, stgit-series, 그리고 hg 가 있다.
-i, --interactive 대화형 (interactive) 모드로 실행한다.
--committer-date-is-author-date 기본적으로는 명령어 실행 시 e-mail 메시지의 날짜를 커밋 작성자 날짜로 (author date), 그리고 커밋 생성 날짜를 커미터 날짜로 (committer date) 기록하게 되어 있다. 이 옵션 사용 시, 커미터 날짜를 작성자 날짜와 동일하게 변경함으로써 커미터 날짜 정보를 기본 동작과 다르게 기록할 수 있다.
--ignore-date 기본적으로는 명령어 실행 시 e-mail 메시지의 날짜를 커밋 작성자 날짜로 (author date), 그리고 커밋 생성 날짜를 커미터 날짜로 (committer date) 기록하게 되어 있다. 이 옵션 사용 시, 작성자 날짜를 커미터 날짜와 동일하게 변경함으로써 작성자 날짜 정보를 기본 동작과 다르게 기록할 수 있다.
--skip 현재 패치를 건너뛰도록 한다. 이 옵션은 패치 적용이 중단된 상태에서 다시 패치 작업 재개를 요청하는 경우에만 의미가 있다.
-S[<keyid>], --gpg-sign[=<keyid>] 커밋들에 대해 GPG-sign 을 수행한다.
--continue, -r, --resolved 패치 작업이 실패한 경우 (예: conflict 이 있는 패치를 적용하려 한 경우 등), 사용자가 수작업을 통해 패치를 적용하여 적용 결과가 index 에 저장이 되고 나면, e-mail 로부터 추출한 원작자 정보와 커밋 로그를 사용하여 현재 index 를 커밋하고 패치 작업을 재개한다.
--resolvemsg=<msg> 패치 작업이 실패한 경우, <msg> 내용이 작업 종료 전에 화면에 표시되도록 한다. 이 옵션은 --continue 혹은 --skip 을 통한 실패 상황 처리 결과를 요구하는 기본 출력 메시지를 대체할 것이다. 이는 전적으로 git rebasegit am 사이의 내부적인 처리를 위한 옵션이다.
--abort 패치 작업을 취소하고 브랜치 본래의 내용을 복원하도록 한다.

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

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

Section 46.3: LFS 설치하기

Homebrew 나 홈페이지 를 통해 다운로드 및 설치를 할 수 있다.

Brew 의 경우에는 다음과 같이 설치한다.

brew install git-lfs git lfs install

많은 경우, 원격 저장소를 제공하는 호스팅 서비스에서도 LFS 와의 연동을 위한 환경 설정이 필요할 수 있다. 이러한 설정 방법은 호스팅 서비스마다 다를 수 있으나, 대부분의 경우 Git LFS 사용을 희망한다는 옵션을 체크하는 정도만으로도 모든 설정이 완료되는 경우가 많다.

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

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

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

특정 LFS 옵션값들이 해당 저장소가 이후 clone 될때에도 대상 컴퓨터에서 동일하게 적용되기를 바란다면, 저장소 최 상단 디렉토리에 .lfsconfig 라는 파일을 생성하고 커밋하도록 한다. 이 파일은 .git/config 에서 설정할 수 있는 것과 동일하게 각종 LFS 옵션값들을 설정할 수 있다.

예를 들어, 특정 파일을 LFS fetch 대상에서 기본적으로 제외하고 싶다면, 아래와 같은 내용의 .lfsconfig 파일을 생성하여 커밋하도록 한다:

[lfs] fetchexclude = ReallyBigFile.wav

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

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

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

역주: Git LFS (Large File Storage) 는 대용량 파일 저장을 위해 Git 과 연동하여 사용하는 별도의 툴로써, 자세한 내용은 https://git-lfs.github.com 에서 확인 바랍니다.

Git LFS 를 사용하는 일반적인 작업 흐름은 .gitignore 파일들과 같이 어떤 파일들을 가로챌 (intercept) 것인지 결정할 규칙 기반 시스템을 선언하는 것이다.

다른 많은 경우와 마찬가지로, wildcard 를 이용하여 특정 파일 타입을 지정할 수 있다.

예) git lfs track "*.psd"

위 예제 패턴에 부합하는 파일이 추가 및 커밋된 경우, 원격으로 push 되는 시점에 해당 파일은 LFS 에 따로 업로드가 진행될 것이며, 원격 저장소에는 해당 파일이 LFS에 업로드된 위치를 가리키는 포인터로 대체될 것이다.

파일이 LFS 에 의해 추적 (track) 되기 시작하면, 사용자의 .gitattributes 파일 역시 그에 알맞게 자동으로 갱신이 될 것이다. Github 에서는 여러 프로젝트에서 작업 시 글로벌한 .gitattributes 를 사용함으로써 생길 수 있는 여러 문제를 피하기 위해서, 사용자의 로컬 .gitattributes 파일을 커밋하는 것을 권장한다.

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

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

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

<old> 라는 이름으로 등록된 원격 저장소를 <new> 라는 이름으로 변경할 수 있다. 해당 원격 저장소에 대한 원격 추적 (remote-tracking) 브랜치들과 환경 설정값들 모두가 갱신될 것이다.

dev 라는 이름의 원격 저장소를 dev1 로 변경하는 아래 예제를 참고한다:

git remote rename dev dev1

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

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

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

git remote show <remote repository alias> 명령어를 사용하면 원격 저장소에 대한 추가적인 정보들을 확인할 수 있다.

git remote show origin

실행 결과:

remote origin Fetch URL: https://localserver/develop/myrepo.git Push URL: https://localserver/develop/myrepo.git HEAD branch: master Remote branches: master tracked Local branches configured for 'git pull': master merges with remote master Local refs configured for 'git push': master pushes to master (up to date)

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

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

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

원격 저장소 정보를 추가하기 위해서는, 로컬 저장소의 최상위 디렉토리에서 git remote add 명령어를 입력하면 된다.

Git 저장소인 <url> 을 좀 더 손쉬운 이름인 <name> 으로 등록하려면 다음과 같이 입력한다

git remote add <name> <url>

그런 다음에는, git fetch <name> 을 이용해서 <name>/<branch> 형태의 원격 추적 (remote-tracking) 브랜치들을 생성 및 갱신할 수 있다.

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

반응형

+ Recent posts