2013-05-17 2 views
0

저는 Rails 프로젝트를위한 Github에 대한 단일 커밋으로 개인 레포를 가지고 있습니다. 내 스키마 파일이 마이그레이션과 함께 변경되었으며 동료 개발자가 커밋 (및 개인 repo)에서 스키마 변경 사항을 제거하길 원합니다. 알아 냈다고 생각했지만 집착하지 않는 것 같은데, 내가 뭘 잘못하고 있니? 당신은 리셋을 수행 후 커밋하기 전에 db/schema.rb의 변경 사항을 무대 않았다처럼커밋 중에 하나의 파일에서 변경 사항을 삭제합니다.

git reset 'HEAD^1' db/schema.rb 
git commit --amend -v 
git push origin <branch-name> -f 

답변

1

는 것 같습니다. 따라서 git reset 'HEAD^1' db/schema.rb을 수행 한 후 파일을 git add db/schema.rb으로 스테이징 한 다음 커밋하십시오.

또는 파일을 이전 상태로 재설정하고 git reset head^ 대신 git reset --soft head^을 사용하여 인덱스에 유지할 수 있습니다. 후자는 기본적으로 --mixed 플래그를 사용합니다.이 플래그는 이전 상태 인 동안 변경된 상태를 수행하지 않습니다.

당신은 git reset 플래그 in the documentation에 대한 자세한 내용을보실 수 있습니다 :

--soft 

(모든 모드가 할처럼 에 머리를하지만 재설정) 인덱스 파일도 모두에서 작업 트리를 만지지 않습니다. 이로 인해 변경된 파일 인 이 "커밋 될 변경 사항"으로 남게됩니다. 왜냐하면 자식 상태가 이므로

--mixed 

재설정 지수는 아니지만 작동 나무 (즉, 변경된 파일이 가 유지되지만 커밋 표시되지 않은) 업데이트 을하지 않았다 무엇을보고합니다. 이는 기본 동작입니다.

+0

'git checkout 'HEAD ^'db/schema.rb'를 사용하여 끝났지 만 예! 파일을 추가해야했습니다. 내가 어떻게 그것을 놓쳤는 지 잘 모르겠다. 감사! – Kristian

관련 문제