스택큐힙리스트

앞선 커밋이 아닌 커밋을 수정하세요 [중복] 본문

카테고리 없음

앞선 커밋이 아닌 커밋을 수정하세요 [중복]

스택큐힙리스트 2024. 1. 9. 18:57
반응형

자주 나는 다음과 같은 작업 흐름을 가지고 있습니다.


  1. 파일 그룹에 변경 사항을 커밋합니다.

  2. 다른 파일 그룹에 변경 사항을 커밋합니다.

  3. 첫 번째 커밋에 포함되어야 할 일부 변경 사항을 놓쳤음을 깨닫습니다.

  4. 욕을 합니다.


git commit --amend는 최신 커밋을 변경해야 하는 것이 아니기 때문에 사용할 수 없습니다. 두 번째 커밋을 건드리지 않고 첫 번째 커밋에 변경 사항을 추가하는 가장 좋은 방법은 무엇인가요?

답변 1

이 문제를 해결하기 위해 git rebase를 사용할 수 있습니다. sha1을 커밋 해시로 변경한 후 git rebase -i sha1~1을 실행하십시오. 변경하려는 커밋을 찾고, 리베이스 편집기의 주석에 설명된대로 pick을 edit으로 바꿉니다. 거기서부터 계속하면 해당 커밋을 수정할 수 있습니다.


이 경우 해당 커밋의 sha1뿐만 아니라 모든 하위 커밋의 sha1도 변경될 것임에 유의하십시오. 즉, 이는 해당 지점 이후의 히스토리를 다시 쓰는 것입니다. 이 작업으로 저장소를 망칠 수 있지만, 아직 푸시하지 않았다면 큰 문제가 되지 않습니다.

답변 2

최근에 발생한 사건 중 하나는 이전 커밋이 아닌 커밋을 수정하는 방법에 대한 문제입니다. 이는 개발자들 사이에서 자주 발생하는 문제 중 하나로, 원본 커밋이 이미 푸시되었을 때 수정이 필요한 경우에 발생합니다. 우리는 이 문제를 해결하기 위한 몇 가지 효과적인 방법을 살펴볼 것입니다.
첫 번째로, 이전 커밋을 수정하는 방법은 git rebase 명령을 사용하는 것입니다. 이 명령은 커밋들을 다시 적용하거나 그룹핑하기 위해 사용됩니다. git rebase 명령을 사용하여 원본 커밋을 수정하고자 하는 커밋의 이전으로 이동한 후, 해당 커밋을 수정합니다. 그러나 이 방법은 굉장히 조심스럽게 사용해야 합니다. 이미 공개된 코드나 협업 프로젝트의 경우, 다른 개발자들이 커밋을 가져와서 사용 중일 수 있기 때문입니다.
두 번째로, git commit --amend 명령을 사용하여 이전 커밋을 수정하는 방법이 있습니다. 이 명령을 사용하면 마지막 커밋을 수정할 수 있습니다. 새로운 변경 사항을 추가하거나 이전 변경 사항을 대체하고 싶은 경우, git commit --amend 명령을 사용하여 수정합니다. 이 방법은 가장 간단한 방법 중 하나이지만, 이미 푸시된 커밋을 수정하는 것은 권장되지 않습니다.
세 번째로, git revert 명령을 사용하여 커밋을 수정하는 다른 방법이 있습니다. 이 명령은 이미 푸시된 커밋을 취소하고 새로운 커밋을 생성합니다. 원본 커밋을 수정할 필요 없이 새로운 커밋을 생성하기 때문에, 이 방법은 개발자들 사이에서 많이 사용됩니다. 그러나 여기에도 주의해야 합니다. 이미 다른 개발자들이 해당 커밋을 사용하고 있는 경우, 충돌이 발생할 수 있습니다.
따라서, 이전 커밋을 수정하는 방법은 프로젝트의 특성과 상황에 따라 다릅니다. 개발자들은 주의를 기울여서 커밋 수정 방법을 선택해야 합니다. 협업 프로젝트의 경우 다른 개발자들과의 충돌을 피하기 위해 주의해야 하며, 이미 푸시된 커밋을 수정하는 것은 권장되지 않습니다. 이러한 커밋 수정을 잘 처리하면 프로젝트의 효율성을 높일 수 있습니다.

반응형
Comments