색인을 사용해야합니다. 혼합 재설정 ( " git reset HEAD ^")을 수행 한 후 첫 번째 변경 사항 세트를 색인에 추가 한 후 커미트하십시오. 그런 다음 나머지는 커밋하십시오.
" git add "를 사용 하여 파일의 모든 변경 사항을 색인에 넣을 수 있습니다 . 파일에서 수행 된 모든 수정 사항을 스테이징하지 않으려면 그 중 일부만 "git add -p"를 사용할 수 있습니다.
예를 보자. 다음 텍스트가 포함 된 myfile이라는 파일이 있다고 가정 해 봅시다.
something
something else
something again
마지막 커밋에서 수정하여 이제 다음과 같이 보입니다.
1
something
something else
something again
2
이제 두 개로 나누고 첫 번째 줄을 첫 번째 커밋에 넣고 마지막 줄을 두 번째 커밋에 넣기를 원합니다.
먼저 HEAD의 부모로 돌아가서 파일 시스템의 수정 사항을 유지하고 싶습니다. 그래서 인수없이 "git reset"을 사용합니다 (소위 "혼합"재설정).
$ git reset HEAD^
myfile: locally modified
$ cat myfile
1
something
something else
something again
2
이제 "git add -p"를 사용하여 커밋하려는 변경 사항을 인덱스에 추가합니다 (= 스테이징). "git add -p"는 색인에 추가해야 할 파일 변경 사항을 묻는 대화식 도구입니다.
$ git add -p myfile
diff --git a/myfile b/myfile
index 93db4cb..2f113ce 100644
--- a/myfile
+++ b/myfile
@@ -1,3 +1,5 @@
+1
something
something else
something again
+2
Stage this hunk [y,n,a,d,/,s,e,?]? s # split this section into two!
Split into 2 hunks.
@@ -1,3 +1,4 @@
+1
something
something else
something again
Stage this hunk [y,n,a,d,/,j,J,g,e,?]? y # yes, I want to stage this
@@ -1,3 +2,4 @@
something
something else
something again
+2
Stage this hunk [y,n,a,d,/,K,g,e,?]? n # no, I don't want to stage this
그런 다음이 첫 번째 변경 사항을 커밋합니다.
$ git commit -m "Added first line"
[master cef3d4e] Added first line
1 files changed, 1 insertions(+), 0 deletions(-)
이제 다른 모든 변경 사항 (즉, 마지막 줄에있는 숫자 "2")을 커밋 할 수 있습니다.
$ git commit -am "Added last line"
[master 5e284e6] Added last line
1 files changed, 1 insertions(+), 0 deletions(-)
로그를 확인하여 커밋이 무엇인지 확인하십시오.
$ git log -p -n2 | cat
Commit 5e284e652f5e05a47ad8883d9f59ed9817be59d8
Author: ...
Date: ...
Added last line
Diff --git a/myfile b/myfile
Index f9e1a67..2f113ce 100644
--- a/myfile
+++ b/myfile
@@ -2,3 +2,4 @@
something
something else
something again
+2
Commit cef3d4e0298dd5d279a911440bb72d39410e7898
Author: ...
Date: ...
Added first line
Diff --git a/myfile b/myfile
Index 93db4cb..f9e1a67 100644
--- a/myfile
+++ b/myfile
@@ -1,3 +1,4 @@
+1
something
something else
something again
git reset [--patch|-p] <commit>
해야 할 어려움을 덜어 주는 편리한 바로 가기 명령 이 있습니다git add -p
. 내가 맞아? 자식 사용 1.7.9.5.