2013-07-03 1 views
1

저는 역사에서 커밋을 어떻게 나누는지를 배우려고합니다. 나는이 페이지를 나를 안내하기 위해 사용한다 : http://git-scm.com/docs/git-rebase.html#_splitting_commits 나는 두 커밋을 가지고 있으므로 git rebase -i <hashOfTheCommit>^을 입력한다. 커밋 된 행을 pick에서 edit으로 변경합니다. 그런 다음 git reset HEAD^을 입력합니다. 여태까지는 그런대로 잘됐다. 이제 새로운 디렉토리에 file1을 추가하는 커밋에 의해 도입 된 변경 사항이 있습니다.역사에서 커밋을 나누십시오.

commit line1 

commit line2 

그래서 나는이 두 커밋에 한 줄의 각 도입 또한 커밋 분할 할 :

파일의 내용은 기본적으로 두 줄입니다. 그러나 git add -p file1을 입력하면 응답은 No changes.이고 파일은 색인에 추가되지 않습니다. 나는 패치 모드에 들어가기를 기대하지만, 그렇게되지는 않습니다.

답변

0

git add --interactive가 심지어 작동하지 않는다면, 모두 파일이 이미 색인에 있기 때문일 수 있습니다. (이 명령 행으로 자동화 할 수는 없지만, 어쩌면 그것은 당신의 사건에 대한 작동)

git reset HEAD -- file 
git add -p -- file 
+0

'all' 파일로 무엇을 의미합니까? 그 이름을 가진 파일이 없으며'file1'은'git reset HEAD ^'명령 뒤에서 추적 할 수 없습니다. – coubeatczech

+0

@coubeatczech "all"= 그 파일의 전체 내용. 나는'git add --interactive'가 제대로 작동하지 않는다고 생각합니까? – VonC

+0

예,'git add --interactive'는 잘 작동하지 않으며, 파일은 확실히 색인에 없습니다. 아주 늦은 대답에 대한 미안, 내가 통보를받지 못했습니다 ... – coubeatczech

0

당신은이 작업에 대한 GUI를 사용할 수 있습니다 :

그래서 경우를보십시오.

분기하려는 분기가 커밋을 가리키고 해당 분기를 체크 아웃합니다 (이 분기를 분할 커밋). GUI (git gui)를 열고 '최종 커밋 확인'을 선택하십시오 (커밋 설명 텍스트 상자 위). 이 옵션을 선택하면 문제의 커밋을 작성하는 것과 같은 상황에 있으므로 파일을 선택하고 원하는 행을 스테이지/언 스테이지 할 수 있습니다 (파일 내용을 표시하는 상자에서 행을 선택하고 원하는대로 무대/무대를 클릭하십시오.)

준비가되면 커밋을 클릭하십시오. 그러면 커밋이 수정되고, 언 스테이지의 라인은 인덱스에 추가되지 않은 변경 사항으로 표시됩니다. 그런 다음 해당 줄을 사용하여 새 커밋을 만들 수 있습니다 (분기 커밋 split 커밋에 추가됩니다). 새 분할 된 커밋을 사용하여 원래 분기의 내역을 다시 실행하려면 해당 분기를 체크 아웃하고 분기 커밋 분기로 리베이스하십시오.

그것은 그리 간단하지는 않지만 실제로는 복잡한 프로세스가 아니며 고급 Git 명령을 사용할 필요가 없습니다.

+0

고마워,하지만 난 아주 열정적 인 GUI 사용자가 아니에요 ... – coubeatczech