수색…
비고
스테이징은 '파일'자체 및 각각의 주어진 파일 내의 변경 사항과 관련이 거의 없다는 점은 주목할 가치가 있습니다. 변경 사항이 포함 된 파일을 준비하고 git은 변경 사항을 커밋으로 추적합니다 (커밋 변경 내용이 여러 파일에 적용된 경우에도 마찬가지입니다).
파일과 커밋의 차이는 사소한 것처럼 보일 수 있지만이 차이를 이해하는 것은 cherry-pick 및 diff와 같은 필수 기능을 이해하는 데있어 기본적입니다. ( 체리 피클을 파일 관리 도구로 제안한 수락 된 답변의 복잡성에 대한 의견에 대한 좌절감을 참조하십시오.)
개념을 설명하기에 좋은 곳이 무엇입니까? 비고문에 있니?
주요 개념:
파일은 정보 기술에서이 둘의 공통점입니다. 모범 사례는 내용이 변경 될 때 파일 이름이 변경되지 않도록 지시합니다 (예외는 거의 없습니다).
확약은 소스 코드 관리에 고유 한 은유입니다. 커밋은 버그 수정과 같은 특정 작업과 관련된 변경 사항입니다. 커밋에는 여러 파일이 포함되는 경우가 많습니다. 단일, 사소한 버그 수정은 템플릿 수정 및 고유 파일의 CSS 수정을 포함 할 수 있습니다. 변경 내용이 설명되고, 개발되고, 문서화되고, 검토되고 배포 될 때, 개별 파일에 대한 변경 내용을 주석 처리하고 단일 단위로 처리 할 수 있습니다. 이 경우 단일 단위가 커밋입니다. 마찬가지로 중요한 것은 검토 중에 커밋에 초점을 맞추면 영향을받는 여러 파일의 변경되지 않은 코드 줄을 안전하게 무시할 수 있습니다.
단일 파일 준비
커밋 할 파일을 준비하려면 다음을 실행하십시오.
git add <filename>
파일에 대한 모든 변경 사항 준비
git add -A
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>
이 출력의 윗부분은 인덱스의 현재 상태를 스테이지 및 비 스테이지 컬럼으로 구분합니다.
-
index.js
에는 4 개의 행이 추가되고 4 개의 행은 제거되었습니다. 현재 상태가 "변경되지 않았 음"으로보고되므로 현재 준비가되어 있지 않습니다. 이 파일이 스테이징되면+4/-4
비트가 스테이징 된 컬럼으로 전송되고 스테이징되지 않은 컬럼은 "아무것도 표시되지 않습니다." -
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 --interactive
와 p
선택하여 열 수도 있습니다.
단계별 변경 사항 표시
커밋을 위해 준비된 헌크를 표시하려면 다음과 같이하십시오.
git diff --cached