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

Section 4.7: 파일을 삭제하고 삭제 내역을 stage 영역에 추가하기

git rm <filename>

사용자의 디스크에서 실제로 파일을 지우지는 않고 git 에서만 삭제하기를 원한다면, 아래와 같이 --cached 옵션을 사용한다:

git rm --cached <filename>

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

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

Section 4.6: 파일을 stage 시키기

이후 커밋에 포함시키기 위해 파일을 stage 영역에 추가하려면, 다음과 같이 입력한다:

git add <filename>

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

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

Section 4.5: stage 된 변경 내역 확인하기

이후 커밋에 포함될 (=stage 된) 변경 내역들을 화면에 표시하려면 다음과 같이 입력한다:

git diff --cached

역주: git diff --staged 로 입력해도 동일하게 동작합니다

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

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

Section 4.4: 대화형(Interactive) add

git add -i (혹은 --interactive) 명령어는 이후 커밋에 포함될 사항들의 목록을 편집할 수 있는 대화형 인터페이스를 제공한다.

이 대화형 인터페이스를 이용하면 수정된 파일 전체를 stage 영역에 추가/제거하거나, git 관리대상이 아닌 (untracked) 파일을 관리대상으로 추가하거나 반대로 관리대상에 새롭게 추가된 파일을 제거할 수 있을 뿐만 아니라, 더 나아가 수정된 내역을 조각별로 선택하거나, 조각을 더 작은 단위로 나누거나, 혹은 아예 diff 자체를 편집하는 등의 방법으로 현재 변경사항 중 일부분만 커밋 대상에 포함시킬 수도 있다.

여러가지의 Git 용 GUI 커밋 툴들 (예: git gui) 이 이와 같은 기능을 제공한다; 이러한 GUI 툴은 이용하는 것이 커맨드라인 명령어를 직접 입력하는 것보다 훨씬 사용하기가 쉬울 것이다.

만약 여러분이 (1) 하나의 커밋으로 묶기에 적합하지 않아 여러개의 개별 커밋으로 나누어야 할 수정사항들을 구분되지 않은 채로 작업 디렉토리에 가지고 있거나 (2) 대화형(interactive) rebase를 진행하던 중 하나의 커밋이 너무 커 여러개의 작은 커밋으로 나누고자 한다면 이 명령어는 매우 유용할 것이다.

$ git add -i staged unstaged path 1: unchanged +4/-4 index.js 2: +1/-0 nothing package.json *** Commands *** 1: status 2: update 3: revert 4: add untracked 5: patch 6: diff 7: quit 8: help What now>

출력 화면 상단에는 현재 상태 목록을 stage 된 부분과 stage 되지 않은 열로 나누어 표시하고 있다:

  1. index.js 파일은 4줄이 추가되고 4줄이 삭제된 상태이다. 해당 파일은 현재 stage 되어있지 않아, "staged" 열 부분이 "unchanged" 로 표시되어 있다. 만약 이 파일을 stage 시킨다면, "+4/-4" 부분은 "staged" 열로 이동할 것이고 "unstaged" 열의 내용은 "nothing" 으로 바뀔 것이다
  2. package.json 파일은 한줄이 추가된 이후 해당 변경 내역이 stage 되었다. stage 된 이후에는 추가적으로 변경된 내역이 없는데, 이는 "unstaged" 열에 해당하는 내용이 "nothing" 으로 표시된 것은 확인하여 알 수 있다.

화면 하단에는 사용자가 수행할 수 있는 작업 목록이 표시되고 있다. 화면에 표시된 대로 숫자나 (1-8) 영문자를 (s, u, r, a, p, d, q, h) 입력하여 원하는 작업을 수행한다.

status 위에서 소개했던 예제 화면과 동일한 형식으로 현재 상태를 다시 한번 표시해준다.

update 이후 커밋에 반영될 stage 영역에 추가할 파일들을 선택할 수 있도록 목록을 표시한다.

revert stage 영역에 추가된 파일들 중 변경 내역 정보를 HEAD 의 상태로 되돌릴 (unstage 시킬) 파일들을 선택한다.

add untracked 현재까지 Git 에의해 관리되지 않았던 (untracked) 파일을 추가한다.

patch 추가적으로 분석할 파일을 선택해 파일 내 수정 내역을 조각 단위로 추가한다. (git add -p 에서 소개한 기능이다)

diff 커밋될 파일들을 (stage 된 파일들) 선택하여 변경 내역을 출력한다.

quit 대화형 프롬프트를 종료한다.

help 현재 대화형 프롬프트에서의 추가적인 도움말을 표시한다.

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

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

Section 4.3: 변경 내역을 조각(hunk) 단위로 추가(add) 하기

git add 시에, patch 옵션을 통해 이후 커밋에 포함될 변경 내역을 "조각들" 단위로 확인하여 stage 할 수 있다:

git add -p

혹은

git add --patch

위와 같은 명령어 입력시, 각 diff 덩어리들을 눈으로 확인 후 아래와 같이 stage 시킬지 말지 결정할 수 있는 대화형 프롬프트가 화면에 나타나게 된다.

Stage this hunk [y,n,q,a,d,/,s,e,?]?
  • y : 이 조각(hunk) 이 이후 커밋에 포함될 수 있도록 stage 시킨다
  • n : 이 조각이 이후 커밋에 포함되지 않도록 stage 대상에서 제외한다
  • q : 종료; 이 조각 및 이후 모든 조각들을 stage 시키지 않는다
  • a : 이 조각과 이후 현재 파일 내 모든 조각들을 stage 시킨다
  • d : 이 조각 및 이후 현재 파일 내의 모든 조각들을 stage 시키지 않는다
  • g : 파일 내의 다른 조각들의 목록을 표시하고 이동할 조각 위치를 선택한다
  • / : 정규표현식을 이용해 조각을 검색하고 해당 위치로 이동한다
  • j : 현재 조각에 대한 결정은 뒤로 미루고 다음 미확정 조각 위치로 이동한다
  • J : 현재 조각에 대한 결정은 뒤로 미루고 확정 여부와 상관없이 다음 조각 위치로 이동한다
  • k : 현재 조각에 대한 결정은 뒤로 미루고 이전 미확정 조각 위치로 이동한다
  • K : 현재 조각에 대한 결정은 뒤로 미루고 확정 여부와 상관없이 이전 조각 위치로 이동한다
  • s : 현재 조각을 더 작은 단위의 조각으로 나눈다
  • e : 현재 조각 내용을 직접 편집한다
  • ? : 조각 관련 조작 도움말을 표시한다

이와 같은 방법을 이용하여 이후 커밋에 포함하고 싶지 않은 수정내역들을 손쉽게 찝어낼 수 있다.

위 프롬프트는 git add --interactive 명령어 입력 후 p 항목 선택을 통해서도 접근할 수 있다.

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

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

Section 4.2: 변경 사항이 포함된 파일을 unstage 하기

git reset <filePath>

역주: 위 명령어는 <filePath> 에 해당하는 파일이 git add 명령어를 통해 이미 stage 되어 있는 경우 stage 영역에서 제외시키기 위해 사용하는 명령어입니다.

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

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

Section 4.1: 파일들의 모든 변경 내역을 Staging 하기

git add -A

위와 같이 수행하거나 혹은 2.0 이후의 버전에서 아래와 같이 수행한다.

git add .

2.x 버전에서는, git add . 명령어는 현재 디렉토리와 모든 하부 디렉토리의 모든 파일들에 대한 변경 내역을 stage 할 것이다. 그러나, 1.x 버전에서는 새로 추가되었거나 수정된 파일들만 stage 할 뿐, 삭제된 파일들에 대해서는 stage 를 수행하지 않는다.

git add -A 명령어나, 혹은 동일한 명령어인 git add --all 를 사용하면, Git의 버전에 상관없이 모든 파일들의 수정 내역을 stage 할 수 있다.

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

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

Section 3.11: 특정 원격 저장소에 대한 정보 표시하기

주어진 원격 저장소 (예:origin) 에 대해서, 아래와 같은 명령어를 통해 해당 원격 저장소에 연관된 다양한 정보를 출력할 수 있다:

git remote show origin

혹은, 원격 저장소의 URL 정보만 표시하고 싶다면 아래와 같은 방법을 사용할 수도 있다:

git config --get remote.origin.url

2.7+ 이상의 버전을 사용하고 있다면, 위에 소개된 것처럼 config 명령어를 사용할 필요 없이, remote 명령어에서 바로 URL 정보를 얻어올 수도 있다.

git remote get-url origin

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

반응형

+ Recent posts