아무 커밋이나 편집
오타가 3주 전 커밋에 있어요. 흔한 해결책은 대화형 리베이스예요. 그 커밋에서 멈추 고, 편집하고, 계속하고, 기도하는 것. Gitcito의 해결책은 이래요. 커밋을 우클릭하 고, 이 커밋 편집, 텍스트를 고치면, 끝. 커밋 상세 패널의 펜 버튼도 같은 편 집기를 열어요.

무엇을 하나요
HEAD의 조상인 아무 커밋이나 골라요 — 히스토리가 직선이 아니어도 돼요. 모달이
그 커밋의 파일과 메시지를 보여 주고, 둘 다 편집할 수 있어요. 거기서 두 가지가
일어나요.
- 캐스케이드 미리보기는 편집한 커밋 위의 모든 커밋을 메모리 안에서 리플레
이해요(
merge-tree체리픽의 연쇄 — 체크아웃도, 워킹 트리도, ref도 없어요). 자손 커밋마다 초록 또는 빨강으로 표시되니, 편집이 깔끔하게 번지는지 나중 변경 과 충돌하는지를 무언가가 움직이기 전에 알 수 있어요. - 히스토리 다시 쓰기는 실제로 실행해요. 같은 연쇄를 플러밍으로 만든 뒤 브랜
치를
reset --keep으로 옮겨요 — 커밋하지 않은 변경은 함께 옮겨지거나, 리셋이 중단되어 아무 일도 일어나지 않아요. 먼저 가드 스냅숏이 찍히고, 되돌리기가 이전 연쇄를 복원해요.
리플레이된 모든 커밋의 작성자와 날짜는 보존돼요. 바뀌는 건 해시뿐이에요 — 그것이 히스토리를 다시 쓴다는 뜻이에요.
범위 안의 머지

커밋과 HEAD 사이에 머지가 있어도 이제 편집이 비활성화되지 않아요. 캐스케이드는
머지의 기록된 결과 — 그 머지가 실제로 커밋한 트리로, 충돌 해결까지 포함해요
— 를 다시 쓰인 부모 위에 다시 적용하는 방식으로 머지를 리플레이해요. 그래서 누
군가 손으로 한 해결이 다시 쓰기에서도 글자 그대로 살아남아요. rerere도, 재머지
도, 워킹 트리도 없어요. 캐스케이드의 나머지와 같은 메모리 안 플러밍이고, 두 부모
포인터 모두 보존돼요. 편집한 커밋을 같이 담고 있는 사이드 브랜치는 다시 쓰여 새
로 가리켜지고, 담고 있지 않은 브랜치는 정체성이 전혀 건드려지지 않아요. 모달의
배너가 범위에 머지가 몇 개 있는지 알려 주고, 미리보기에서 머지 단계에는 머지 아
이콘이 표시돼요.
솔직한 주의점 하나. 리플레이된 머지는 기록된 결과만큼만 좋아요. 편집이 머지 스스 로 해결했던 줄과 충돌하면, 미리보기는 다른 충돌 단계와 똑같이 빨강이 돼요 — 아무 것도 추측하지 않아요.
캐스케이드가 충돌할 때
나중 커밋이 지금 편집하는 것과 같은 줄을 건드린 경우예요. 미리보기는 그 커밋을 충돌 파일과 함께 빨강으로 표시하고, 다시 쓰기는 실행을 거부해요 — 절반만 적용되 는 일은 결코 없어요. 다르게 편집하거나, 대화형 리베이스로 충돌을 정 면으로 다루세요.
한계
- 커밋은
HEAD의 조상이어야 해요. 머지되지 않은 사이드 브랜치의 커밋에는 현재 브랜치로 리플레이할 경로가 없어요. - 바이너리 파일과 2 MB가 넘는 파일은 보이지만 편집할 수 없어요.
- 이미 리모트에 있는 커밋도 편집할 수 있지만, 다음 푸시는 강제 푸시가 될 수 밖에 없어요 — 그 결정을 내리기 전에 모달이 경고해요.
- 커밋에서 삭제된 파일은 편집할 수 없어요(편집할 내용이 없으니까요).
함께 보기: 대화형 리베이스 · 복구와 reflog · Absorb