이를 해결하는 방법에는 여러 가지가 있습니다.
현재 변경을 방해하지 않고 첫 번째 커밋에 대한 변경을 수행하려는 경우을 사용할 수 있습니다 git stash
. 이렇게하면 열려있는 모든 변경 사항이 사라져 나중에 복원 할 수 있습니다. 사용 git status
그들이 더 이상 존재하지 않는 것을 볼 수 있습니다. 이제 익숙한 첫 번째 커밋을 만듭니다. 다음으로 git stash pop
, 기본 작업을 수행하여 원래 변경 사항을 복원하고 두 번째 커밋을 작성하는 데 사용할 수 있습니다 .
다른 방법은 필요한 모든 변경을 수행 한 다음 작업의 일부를 포함하는 두 개의 커밋을 만드는 것입니다. 이를 위해 git에서 제공하는 인덱스 (스테이징 영역이라고도 함)를 사용할 수 있습니다. 커밋을 준비하는 데 사용할 수있는 특별한 영역입니다. 여러 파일을 변경했다고 가정하면을 사용하여 각 파일을 색인에 추가 할 수 있습니다 git add
. 수행 할 때 git commit
인덱스에 추가 된 파일 만 커밋됩니다. git status
변경 사항 중 어떤 부분이 커밋되고 그렇지 않은 부분이 표시됩니다. 예를 들어 파일 a.txt, b.txt 및 c.txt를 변경 한 후 다음과 같이하면됩니다 git add a.txt
.
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: a.txt
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: b.txt
modified: c.txt
git commit
이 상태에서 수행하면 a.txt에 대한 변경 사항 만 커밋에 추가됩니다.
또한을 사용하여 커밋 할 정확한 변경 사항을 검토하면 커밋 될 git diff --cached
모든 변경 사항을 확인할 수 있습니다.
하나의 파일에 두 커밋에 대한 변경 사항이 포함 된 경우 "git add --patch b.txt"를 사용하여 파일의 일부만 색인에 추가 할 수도 있습니다. git은 주어진 파일의 각 변경을 인덱스에 추가해야하는지 묻는 대화식 모드를 제공합니다. 서로 옆에 줄이 바뀌면 두 커밋으로 분할해야하지만 더 해결할 수있는 방법이 있습니다.
준비 영역에 대한 자세한 내용은
http://gitready.com/beginner/2009/01/18/the-staging-area.html을 참조하십시오.
대화식 추가에 대한 자세한 내용은 http://nuclearsquid.com/writings/git-add/를 참조 하십시오.
git status
변경된 모든 파일을보고git add
특정 파일 () 대신 사용git add --all
하고 조각 단위로 커밋 하여 두 개 이상의 커밋을 수행 합니다 .