2012-08-31 1 views
0

책의 부분을 반대로 파일을 개최 커밋 :힘내 이전의 유엔 무대 변화가 자식-SCM 책

http://git-scm.com/book/en/Git-Basics-Recording-Changes-to-the-Repository#Staging-Modified-Files

내가 파일 A를 변경하는 경우, 실행 '자식이 추가'를 말한다 파일 A를 다시 변경하고이 파일에서 'git commit'을 실행하면 이전에 수행 된 변경 사항 만 커밋됩니다. unstaged 변경 사항을 커밋하려면 - 파일을 다시 추가하고 커밋하십시오.

몇 가지 테스트가 끝나면 git은 파일 A의 모든 변경 사항을 커밋합니다. 파일이 처음에 준비된 후에 만들어진 경우에도 마찬가지입니다.

누구든지이 문제에 관해 밝힐 수 있습니까? 감사.

EDIT : -a 옵션을 사용하지 않습니다. "git commit A"(-a 옵션을 사용하지 않음)에 명시 적으로 파일을 지정하면 파일 변경이 취소됩니다. 파일없이 커밋 "git commit"은 커밋 메시지를 입력 한 다음 책에 설명 된대로 동작합니다.

+1

정확한 명령은 무엇입니까? 아마 당신은'-a' 옵션을 사용하고 있습니까? –

+0

파일을 명시 적으로 커밋에 지정하면 (예 : -a 옵션을 사용하지 않음) 커밋되지 않은 변경도 커밋됩니다. – alexy2k

+0

'git commit - A'는 같은 일을할까요? (unstaged 변경을 커밋) – VonC

답변

1

"파일 A의 모든 변경 사항을 커밋"한다고 어떻게 판단합니까? 내 버전 git에서 이것을 재현 할 수 없습니다. 당신이이 시점에서 볼 수하는 첫 번째 변경 세트가 아니라 두 번째는, 커밋이다

$ git add A     #initial commit of A 
$ git commit -m first 
$ <modify A> 
$ git add A     #stage first set of changes 
$ <modify A again> 
$ git commit -m second  #without staging second modifications 

: 나는 당신이이 과정을 따르는 경우에 당신이 말을하는지 무슨 생각을 반복합니다. git show HEAD:A은 두 번째 수정을 수행하기 전의 상태로 파일을 표시해야합니다. 그러나 두 번째 수정 내용은 여전히 ​​파일 (cat A)의 작업 복사본에 있으며 git status은 A에 unstaged 변경 사항이 있음을보고해야합니다. 정확히 복제하려고 시도했을 때 예상했던 것입니다.

그게 보이지 않는 경우 위에 나열된 것과 다른 결과를 얻었거나 실행중인 git의 버전이 깨졌습니다.

+0

맞습니다. 나는 무단 변경을 봅니다. 그러나 A를 편집하고 다시 편집 한 다음 'git commit A -m <..>'을 실행하면 unstaged changes도 추가됩니다. 요약하자면, 커밋 중에 명시 적으로 파일을 지정하면 모든 변경 사항이 제출되고 완료되지 않습니다. 이것이 의미가 있습니까? 도와 주셔서 감사합니다. – alexy2k

+0

'git commit '에 대한 man 페이지는 다음과 같이 말합니다 : "추가 할 내용은 여러 가지 방법으로 지정할 수 있습니다 : ... 3. commit 명령의 인수로 파일을 나열합니다.이 경우 commit은 단계적으로 변경된 내용을 무시합니다 대신 목록에있는 파일의 현재 내용을 기록하십시오. " 그래서, 네가 명시 적으로 파일을 커밋 할 때 네가 보는 것은 의미가있다. – twalberg

+0

다시 학습 - 처음에 문서 읽기 :) 지적 해 주셔서 감사합니다. 당신의 대답을 수락하십시오. – alexy2k

1

당신이 커밋 할 때 아마 -a 옵션을 추가 할 것입니다. 커밋 이전에 다른 것을 추가합니다. -a을 생략 할 때 설명 된대로 작동합니다.