2014-09-21 2 views
1

수정 된 파일이 다섯 개 있다고 가정하고 커밋을 위해이 중 두 단계를 수행합니다 (이 커밋 A라고 부름). 그렇다면 커밋되지 않은 세 가지 변경 사항이 있습니다. 이제 언젠가 미래에 내가 A를 커밋하기 위해 작업 디렉토리를 되돌리기로 결정했다고 가정하자. 그럼에도 불구하고 A에 커밋을 위해 준비되지 않았지만 그럼에도 불구하고 수정 된 파일의 상태는 무엇이겠습니까? 그 변화가 없어지겠습니까?힘내 단계와 커밋 - 되돌릴 때 커밋되지 않은 파일은 어떻게됩니까?

+1

다른 버전 제어 시스템의 임의 용어를 사용하는 대신 질문에 특정 명령을 사용한 경우 더 좋을 것입니다. 나는 당신이'자식 재설정 (git reset) '에 대해서만 이야기하고 있으며,'--soft','--mixed' 또는'--hard'를 지정함으로써 인덱스와 작업 트리에서 일어나는 일을 명시 적으로 선택했다고 생각할 수 있습니다. –

+2

동의; "revert"는 Git의 정확한 용어이지만 종종 도구를 처음 사용하는 사람들이 "재설정"과 같은 것을 의미하기도합니다. @deepak 당신이하고 싶은 것을 더 자세하게 설명 할 수 있습니까? –

+0

@ EdwardThomson 여기에 언급 된 내용과 FractalSpace의 대답에 이어 나는 내가 생각해 왔던 것이 되돌리기보다는 리셋 된 것임을 이해하기 시작했다. – deepak

답변

2

git revert은 되 돌리는 commitA의 파일 만 수정합니다.
다른 파일은 건드리지 않습니다.

말하자면, 그 파일을 은닉하는 것이 좋은 생각 일 수 있습니다. 다만 "wrong wrong"의 경우에는 (git stash) 아무 것도 일어나지 않습니다.

1

현재 스테이징 상황에 관계없이 커밋 'A'의 '되돌리기'는 커밋 A의 영향을 반전시키는 맨 위에 새로운 커밋 (예 : A *)을 생성합니다. 깨끗한 작업 디렉토리 (즉 stash 또는 수정/staged 파일 커밋)로 프로세스를 되돌리기.

+1

음, 되돌리기는 A를 색인으로 되돌리려면 변경 사항을 적용하여 작동합니다. 따라서 무대 뒤의 변경에 대해 실제로 수반되는 내용을 더 이상 정의하지 않으면 "개입하지"않을 것이라고 제안하는 것이 단순 해 보입니다. –

+1

수정하십시오. 실제로 무대 뒤 또는 수정 된 파일이있는 경우 (내 답변 편집) '자식 되돌리기'가 차단됩니다. – FractalSpace

+0

그래서 올바르게 이해하면 내 작업 사본이 커밋 A의 변경 사항을 반영하도록 변경되지만 다른 파일의 부분 작업은 표시되지 않습니다. 나는. 다른 파일에서 부분 작업을 복구 할 수 없습니다. 이것은 되 돌린 후에 작업 복사본이 이전 작업 복사본의 정확한 복제가 아니라는 것을 의미합니다. (나는 내가 기대하는 바가 전적으로 실현 가능하지 않을 수도 있다는 것을 이해한다.) – deepak

관련 문제