GIT에서 파일의 일부만 커밋하십시오


질문

 

git에서 파일을 변경하면 변경 사항 중 일부만 커밋 할 수 있습니까?

예를 들어 파일에서 변경된 30 개의 줄 중 15 줄 만 커밋 할 수있는 방법은 무엇입니까?


답변

 

git add -patch (또는 짧은 경우 -p)을 사용할 수 있으며 git가 파일을 분리 할 수있는 것으로 간주되기 시작합니다. "hunks"(파일의 부분).그런 다음이 질문을 촉구 할 것입니다.

Stage this hunk [y,n,q,a,d,/,j,J,g,s,e,?]?

다음은 각 옵션에 대한 설명입니다.

y 스테이지이 헌크 다음의 commit. n 다음의 커밋을 위해이 덩어리를 무시하지 마십시오. q 종료;이 덩어리 나 남은 덩어리를 무시하지 마십시오. 이 덩어리와 나중에 파일의 모든 덩어리 인 무대 d이 덩어리 또는 나중에 파일을 파일에 무시하지 마십시오. g 덩어리를 선택하십시오 주어진 정규식과 일치하는 덩어리를 검색하십시오 j이 덩어리를 맡기고, 다음의 미결 된 덩어리를 보아라. j이 덩어리를 맡기고, 다음 덩어리를 보아라 k는이 덩어리를 맡지 않았다. k는이 덩어리를 맡기고, 이전 덩어리를 보아라 s 현재 덩어리를 작은 덩어리로 나눕니다 e 현재 hunk을 수동으로 편집하십시오 그런 다음 +/- # (고마워 Veksen)를 교체하여 덩어리를 수동으로 편집 할 수 있습니다. ~을 자란Hunk 도움말을 인쇄하십시오

파일이 아직 저장소에 있지 않은 경우 먼저 git add -n 을 수행 할 수 있습니다.그런 다음 git add -p 을 사용하면 계속 될 수 있습니다.

그런 다음 다음을 사용할 수 있습니다 :

git diff - 정확한 변경을 단계적으로 준비했는지 확인하기 위해 Git Reset -p가 실수로 착용감을 잃어 버렸습니다 Git Commit -v 커밋 메시지를 편집하는 동안 커밋을 보려면.

참고 이것은 Git Format-Patch 명령과는 멀리 떨어져 있으며, 그 목적은 .patch 파일로 데이터 커밋 데이터를 구문 분석하는 것입니다.

미래를위한 참고 : Git Tools - 대화식 스테이징



답변

git add -interactive 또는 git add -p 을 사용한 다음 git 커밋 (git condit -a)을 사용할 수 있습니다.Git-Add ManPage의 대화식 모드를 참조하거나 지침을 따르십시오.

Modern Git에는 Git Commit - Interactive (Interactive Commit의 패치 옵션에 대한 단축키 인 Git Commit -patch)도 있습니다.

GUI에서 그것을하는 것을 선호하는 경우 Git-GUI를 사용할 수 있습니다.커밋에 포함시킬 덩어리를 단순히 표시 할 수 있습니다.나는 개인적으로 Git Add -i를 사용하는 것보다 쉽게 찾을 수 있습니다.QGIT 또는 GITX와 같은 다른 GIT GUI는 또한이 기능을 가질 수도 있습니다.



답변

Git GUI는이 기능을 diff보기에서 제공합니다.관심있는 줄을 마우스 오른쪽 버튼으로 클릭하면 "이 줄을 커밋 할 단계"메뉴 항목이 표시되어야합니다.



답변

나는 Git add -e myfile이 텍스트 편집기를 열고 스테이지가있는 어떤 줄을 선택하고하지 않는 어떤 줄을 선택할 수 있기 때문에 git add -e myfile이 가장 쉬운 방법입니다 (적어도 나의 선호도). 편집 명령과 관련하여 :

추가 된 내용 :

추가 된 콘텐츠는 "+"로 시작하는 행으로 표시됩니다.추가 라인을 삭제하여 추가 라인을 방지 할 수 있습니다.

제거 된 내용 :

제거 된 내용은 "-"로 시작하는 행으로 표시됩니다."-"( ""(공백)로 변환하여 제거를 방지 할 수 있습니다.

수정 된 내용 :

수정 된 내용은 "-"행 (이전 콘텐츠 제거) 다음에 "+"행 (교체 내용 추가)으로 표시됩니다."-"라인을 ""로 변환하고 "+"를 제거하여 수정을 방지 할 수 있습니다. 윤곽.쌍의 절반 만 수정하면 인덱스에 혼란스러운 변경 사항을 도입 할 수 있습니다.

Git 추가에 대한 모든 세부 정보는 Git -help Add에서 사용할 수 있습니다.



답변

Vim을 사용하는 경우 우수한 플러그인을 시도 할 수 있습니다.

GDIFF와 함께 작업 복사본과 인덱스와 인덱스와 DP와 같은 클래식 VIM Diff 명령을 사용하여 줄 또는 덩어리를 추가하는 파일의 Diff를 볼 수 있습니다.색인에 수정 사항을 저장하고 다음과 같이 커밋하십시오. GCMMIT, 완료됩니다.

매우 훌륭한 소개 스크린 캐스트는 여기 (특히 2 부 참조).



답변

Atlassian에서 Southerere를 사용하여 강력히 추천합니다.(그것은 무료입니다.) 그것은이 사소한 것입니다.코드 또는 개별 코드의 개별 덩어리를 빠르고 쉽게 단계별 할 수 있습니다.

git

출처:https://stackoverflow.com/questions/1085162/commit-only-part-of-a-file-in-git