수색…


비고

스테이징은 '파일'자체 및 각각의 주어진 파일 내의 변경 사항과 관련이 거의 없다는 점은 주목할 가치가 있습니다. 변경 사항이 포함 된 파일을 준비하고 git은 변경 사항을 커밋으로 추적합니다 (커밋 변경 내용이 여러 파일에 적용된 경우에도 마찬가지입니다).

파일과 커밋의 차이는 사소한 것처럼 보일 수 있지만이 차이를 이해하는 것은 cherry-pick 및 diff와 같은 필수 기능을 이해하는 데있어 기본적입니다. ( 체리 피클을 파일 관리 도구로 제안한 수락 된 답변의 복잡성에 대한 의견에 대한 좌절감을 참조하십시오.)

개념을 설명하기에 좋은 곳이 무엇입니까? 비고문에 있니?

주요 개념:

파일은 정보 기술에서이 둘의 공통점입니다. 모범 사례는 내용이 변경 될 때 파일 이름이 변경되지 않도록 지시합니다 (예외는 거의 없습니다).

확약은 소스 코드 관리에 고유 한 은유입니다. 커밋은 버그 수정과 같은 특정 작업과 관련된 변경 사항입니다. 커밋에는 여러 파일이 포함되는 경우가 많습니다. 단일, 사소한 버그 수정은 템플릿 수정 및 고유 파일의 CSS 수정을 포함 할 수 있습니다. 변경 내용이 설명되고, 개발되고, 문서화되고, 검토되고 배포 될 때, 개별 파일에 대한 변경 내용을 주석 처리하고 단일 단위로 처리 할 수 ​​있습니다. 이 경우 단일 단위가 커밋입니다. 마찬가지로 중요한 것은 검토 중에 커밋에 초점을 맞추면 영향을받는 여러 파일의 변경되지 않은 코드 줄을 안전하게 무시할 수 있습니다.

단일 파일 준비

커밋 할 파일을 준비하려면 다음을 실행하십시오.

git add <filename>

파일에 대한 모든 변경 사항 준비

git add -A
2.0
git add .

버전 2.x에서 git add . 현재 디렉토리와 모든 하위 디렉토리의 파일에 대한 모든 변경 사항을 준비합니다. 그러나 1.x에서는 삭제 된 파일이 아닌 새로운 파일과 수정 된 파일 만 처리 합니다 .

git add -A 또는 이와 동등한 명령 git add --all 을 사용하여 모든 git 버전의 파일에 대한 모든 변경 사항을 준비합니다.

삭제 된 파일 스테이지

git rm filename

파일을 디스크에서 제거하지 않고 git에서 삭제하려면 --cached 플래그를 사용하십시오

git rm --cached filename

변경 사항이 포함 된 파일의 단계를 없앱니다.

git reset <filePath>

대화식 추가

git add -i (또는 --interactive )는 색인을 편집 할 수있는 대화식 인터페이스를 제공하여 다음 커밋에서 원하는 것을 준비합니다. 전체 파일에 대한 변경 사항을 추가 및 제거하고, 추적 할 수없는 파일을 추가하고, 파일을 추적에서 제외 할 수 있습니다. 또한 색인에 추가 할 변경 사항을 선택하거나, 추가 할 변경 사항을 선택하거나, 해당 변경 사항을 분할하거나, diff를 편집 할 수도 있습니다 . Git을위한 많은 그래픽 커밋 도구 (예 : git gui 와 같은)에는 이러한 기능이 포함되어 있습니다. 명령 줄 버전보다 사용하기가 더 쉽습니다.

별도의 커밋에 넣고 싶은 작업 디렉토리의 변경 사항을 얽히고 대화식 리베이스의 중간에 있고 나눠야하는 경우 (1) 하나의 커밋 (2)으로 모두 변경하지 않는 것이 유용합니다 (1) 큰 커밋.

$ 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>

이 출력의 윗부분은 인덱스의 현재 상태를 스테이지 및 비 스테이지 컬럼으로 구분합니다.

  1. index.js 에는 4 개의 행이 추가되고 4 개의 행은 제거되었습니다. 현재 상태가 "변경되지 않았 음"으로보고되므로 현재 준비가되어 있지 않습니다. 이 파일이 스테이징되면 +4/-4 비트가 스테이징 된 컬럼으로 전송되고 스테이징되지 않은 컬럼은 "아무것도 표시되지 않습니다."
  2. package.json 에 한 줄이 추가되었고 준비가 완료되었습니다. unstaged 열 아래의 "nothing"행에 표시된대로 스테이징 되었기 때문에 더 이상의 변경이 없습니다.

아래쪽 절반은 당신이 할 수있는 것을 보여줍니다. 숫자 (1-8) 또는 문자 ( s , u , r , a , p , d , q , h )를 입력하십시오.

status 는 위 출력의 맨 위 부분과 동일한 출력을 표시합니다.

update 사용하면 추가 구문을 사용하여 준비된 커밋을 추가로 변경할 수 있습니다.

revert 는 단계적 커밋 정보를 다시 HEAD로 되돌립니다.

add untracked 를 추가하면 이전에 버전 제어로 add untracked 할 수 add untracked 파일 경로를 추가 할 수 있습니다.

patch 사용하면 추가 분석을 위해 status 와 비슷한 출력에서 ​​하나의 경로를 선택할 수 있습니다.

diff 는 커밋 될 내용을 표시합니다.

quit 명령을 종료합니다.

이 명령을 사용하는 데 도움이되는 help 제공합니다.

큰 덩어리로 변경 사항 추가

패치 플래그를 사용하여 커밋을 위해 준비되는 작업의 "해킹"을 볼 수 있습니다.

git add -p

또는

git add --patch

그러면 diff를보고 포함 시킬지 여부를 결정할 수있는 대화식 프롬프트가 열립니다.

Stage this hunk [y,n,q,a,d,/,s,e,?]?
  • 다음은 커밋 Y는이 덩어리를 무대
  • n 다음 커밋을 위해이 덩어리를 준비하지 마라.
  • q 종료; 이 덩어리 또는 남은 덩어리를 무대로하지 마십시오.
  • 파일에서이 덩어리와 나중에 모든 덩어리가 있는 무대
  • 파일이 덩어리 또는 나중에 심술쟁이의 무대하지 않는 거라고
  • g 갈 곳을 선택하십시오.
  • / 주어진 정규 표현식과 일치하는 행크 검색
  • j는, 미정이 덩어리를 떠나 다음 미정 덩어리를 참조
  • J 는이 덩어리를 미정으로두고 다음 덩어리를 보아라.
  • k 이 덩어리를 미정으로 남겨두고, 이전에 결정되지 않은 큰 덩어리를 보아라.
  • K 는이 덩어리를 미정으로 남겨두고, 이전의 큰 덩어리를 보아라.
  • 의 작은 심술쟁이로 현재의 덩어리를 분할
  • 전자 수동으로 현재의 덩어리를 편집
  • ? 프린트 덩어리 도움말

이렇게하면 커밋하고 싶지 않은 변경 사항을 쉽게 잡을 수 있습니다.

git add --interactivep 선택하여 열 수도 있습니다.

단계별 변경 사항 표시

커밋을 위해 준비된 헌크를 표시하려면 다음과 같이하십시오.

git diff --cached


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow