2014-07-25 4 views
1

내가 역사를 커밋 다음 한 말 :기록에서 특정 Commit 파일을 어떻게 변경합니까?

4317629 Bug-100 : Formatting/Cosmetic Changes 
da10348 Bug-100 : Wire Up UI 
9b49b0a Bug-100 : Added UI 

지금, 나는이 da10348 커밋에, 내가 몇 개의 파일을 한 것으로 찾을 말 : a.txt, b.txt, 내가/수정 프로그램을 제거해야 행을 포함 c.txt.

누군가 내가 그 일을 어떻게 할 수 있는지 말해 줄 수 있습니까?

+0

'git rebase -i 4317629'와'edit' 커밋'da10348'를 사용하십시오. – univerio

답변

1

커밋 후 내역을 변경하려면 순서대로 변경하려는 커밋에 브랜치를 리베이스해야합니다.이 경우 실제로 변경해야 할 커밋 시점에 브랜치를 리베이스해야합니다. ^ 운영자) :

git commit -a --amend --no-edit 

을 마지막으로 REBASE를 완료 :

git rebase -i da10348^ 

변화는 편집하고 변경 사항을 구현하고 커밋

1

변경하려는 커밋의 모든 하위 커밋에 대한 기록을 쉽게 다시 작성할 수있는 경우에만이 작업을 수행 할 수 있습니다. 그렇지 않으면 현재 master 브랜치의 끝에 변경을해야합니다.

당신이 그것을하고 싶은 경우는

git checkout da10348 
# make changes 
git commit -a --amend 
git rebase --onto <amended-sha> da10348 <your-branch> 

을 실행할 수 있습니다 또는 당신은

git rebase -i da10348^ 
# change "pick da10348" to "edit da10348" 
# save, and make changes when rebase -i stops at da10348 
1

을 대화 형 REBASE를 선호하는 경우 이것은 내가 최근 커밋 작은 수정 작업을 수행하는 가장 쉬운 발견하는 방법입니다, 단지 하나의 리베이스 명령 (즉, no git rebase --continue)을 필요로하고 커밋 해시를 기억하지 않기 때문입니다. 아직 how far in the history에 기초하여 대안 git rebase -i HEAD~3 원점으로 푸시하거나되지 지으면

  1. 은 저지 새가 (커밋 메시지로서 통상적 그냥 "수정"을 사용) 이러한 수정
  2. git rebase -i origin/master 확약 만든 변경 사항입니다 (이전 커밋은 변경되지 않습니다).
  3. 대화 형 rebase의 편집기에서 수정하려는 커밋을 새 커밋으로 이동하고 수정하려는 커밋 바로 다음에 명령을 f으로 변경하거나 fixup.
  4. 편집기를 저장하고 닫은 다음 rebase가 끝날 때까지 기다렸다가 결과 기록이 원하는지 확인하십시오.
관련 문제