2015-01-27 2 views
1

이 내 최고 역사를 커밋한다 :일부 커밋의 변경 사항을 인덱스로 가져 오는 방법은 무엇입니까?

나는 인덱스에 그 커밋의 변경을 얻고 하나 이상의 커밋에 커밋 할 필요가
5e1aaf7 final commit message 
0356c0a add Toyota to Cars.txt 
5498f0f add some cities to Cities.txt 
e811024 add Cities.txt 

.

+1

을에서 선택한 파일을 체크 아웃 할 무엇 ' 다시 묻습니다. rebase 작업을 완료 했습니까? rebase를 취소 하시겠습니까? –

+0

커밋 관리에 대해 배우고 있습니다. 마지막 커밋 3 번부터 변경 사항을 다시 가져와야합니다. 나는'git rebase'가 좋다고 생각했지만, 그렇지 않습니다 ...'git checkout 0356c0a - Cars.txt'가 더 낫습니다. 이 경우'--'와'Cars.txt '는 무엇을 의미합니까? –

+0

내가 묻는 내용이 명확하지 않아서 제 대답을 삭제했습니다. Git 커밋 내역이 현재 어떻게 생겼는지 질문을 업데이트 할 수 있습니까? –

답변

1

정확하게 이해했다면 마지막 네 가지 커밋을 다시 실행하고 하나의 변경 사항으로 작업하고 싶습니다. git reset --soft HEAD~4

무슨 일 이니? git reset은 현재 분기 레이블을 임의의 위치로 이동합니다 (git reset --, 혼동스럽게 완전히 다른 작업을 수행합니다). git reset HEAD~4은 현재 분기를 4 커밋으로 이동합니다.

--soft, --hard, --mixed, --merge 인덱스와 작업 복사본에 무슨 일 --keep 제어 할 수 있습니다. --soft은 색인과 작업 사본을 혼자 남겨두기 때문에 작업 할 디스크의 오래된 HEAD가 남아있게됩니다. --hard은 인덱스와 작업 복사본을 새 커밋으로 다시 설정합니다. 일종의 값은 checkout입니다. 나머지는 내가 당신을 워드 프로세서를 읽도록 남겨 둡니다.

함께 스쿼시하고 싶다면 git rebase -i HEAD~4을 사용하고 squash 명령을 사용하십시오.

pick e811024 add Cities.txt 
s 5498f0f add some cities to Cities.txt 
s 0356c0a add Toyota to Cars.txt 
s 5e1aaf7 final commit message 

개별적으로 변경하려면 rebase -i을 사용하고 edit 명령을 사용하십시오. 해결해야 할 충돌이 발생할 수 있음을 알아 두십시오.

e e811024 add Cities.txt 
e 5498f0f add some cities to Cities.txt 
e 0356c0a add Toyota to Cars.txt 
e 5e1aaf7 final commit message 

마지막 커밋을 변경하려는 경우 편집을 수행하고 git commit --amend을 수행하십시오. 마지막 커밋을 다시하고 싶다면 git reset --soft HEAD~을 쓰면됩니다. 이것은 현재 브랜치를 하나의 커밋으로 이동하지만 작업 복사본 만 남겨 둡니다. 나는 redo에 별명을 붙여야한다. 특정 커밋에서이 파일을 검색하려는 경우

1

,이 작업을 수행 할 수 있습니다

git checkout e811024 file/to/restore 

이 잘 모르겠어요 커밋 e811024

관련 문제