2014-01-14 3 views
0

Bitbucket에 저장소가 있습니다. 이러한 커밋 스쿼시 시도어떻게이 git commit 로그를 고칠 수 있습니까?

enter image description here

은 기본적으로 비어있는, 0942142 결과 : 나는 커밋 c2658250a1837e 스쿼시하려고 할 때 나는 좀 커밋 로그를 망쳐. 제가 말하고자하는 것은 파일을 변경하지 않았 음을 보여주는 커밋을 보려고하면 "병합"커밋에 대해 정상이 될 수 있다는 것입니다. 모르겠습니다.

분명히 Bitbucket을 사용하기 전에 이런 문제를 해결할 필요가 있습니다.하지만 사실을 어떻게 해결할 수 있습니까? 가능하다면 0942142, c2658250a1837e을 스쿼시하고 싶습니다. "Unused files removed."라는 단일 커밋처럼 보입니다.

추신 : 이것은 개인 repo (현재)이므로 아무도 이러한 변경 사항을 (아직) 가져 오지 않았습니다.

편집 : 아래의 TheBuzzSaw의 대답은 0a1837e 이후의 모든 커밋을 스쿼시하는 데 적합합니다. 나는 그 세 커밋을 스쿼시하고 나머지 역사를 유지하려고했다. (스크린 샷은 모형이다. 실제 변화를 대표하지는 않는다.) 그래서 나는이 작업을 수행했다 :

git reset --hard HEAD~7 
git cherry-pick -n 0a1837e..c265825 
git cherry-pick -n -m 1 0942142 
git commit -m "Removed unused files" 
git cherry-pick 8f8308b 
git cherry-pick f7b14f5 
git cherry-pick bb90ff9 
git cherry-pick 976985d 
git cherry-pick 6f4d0c2 

이제 커밋의 나 로그가 아름답게한다 :

enter image description here

답변

2
git branch area51 
git reset --hard HEAD~7 
git merge --squash --no-commit area51 
git commit -m "My new commit message." 
git push -f 
git branch -D area51 

필요에 따라 조정합니다.

+0

병합 ('0942142') 이후 5 개의 추가 커밋이 있음을 언급해야합니다. 그게 뭔가 바뀌어? –

+0

예. 그러나 약간 조정해야합니다. 당신은'git reset'을 안전 구역으로 되돌려 줄 수 있습니다. 그리고 개인이 커밋하는'git cherry-pick' (다시 --no-commit' 옵션을 전달하면 현재 상태에 변경 사항을 적용 할 수 있습니다). – TheBuzzSaw

+0

죄송합니다, 저는 꽤 혼란 스럽습니다. 내 게시물에서 업데이트 된 로그를보고 정확히 무엇을해야하는지 말해 줄 수 있습니까? –