찾다

 >  Q&A  >  본문

프런트엔드 - git rebase -i HEAD를 사용하여 이전에 커밋된 코드 수정 정보

오늘 그런 상황에 직면했습니다. 오랫동안 공부했는데 어떻게 해야할지 모르겠습니다. 예를 들어 오늘은 많은 기능을 작성했는데 모두 commit였습니다. 예를 들어 commit의 기록은 다음과 같습니다.

commit message은 각각 "1, 2, 3, 4"로 첫 번째부터 네 번째까지를 나타냅니다. 제출.
매번 동일한 파일을 test.md 수정한다고 가정해 보겠습니다. 4번 제출 후 파일 내용은 다음과 같습니다.

으아아아

은 제출할 때마다 한 줄씩 추가된다는 뜻이며, 해당 내용이 이 제출의 commit message입니다.
그런데 두 번째 제출에서 실수가 있어 수정이 필요하다는 사실을 알게 되었습니다. git rebase -i HEAD~3 대화형 페이지에 들어가려면
을 사용하세요. 아래와 같이 두 번째 제출물 앞의 picke로 변경하면 두 번째 제출물을 수정할 수 있습니다.

이때 test.md 내부 내용은 다음과 같습니다.

으아아아

그런 다음 뭔가를 추가해야 합니다. 예를 들어 5를 새 줄에 쓰고 git add ., git commit --amend 두 번째 commit가 변경됩니다. 그럼 당연히 git rebase --continue를 실행하세요. 3번째 제출시에는 3번째 줄의 내용이 3이어야 하는데, 이때 2번째 제출에서는 보완이 필요해서 3번째 줄에 새로운 내용을 추가했기 때문에 충돌이 발생합니다. 반드시 충돌이 발생하므로 git rebase --continue을 실행하기 전에 이 충돌을 해결해야 합니다. 이때 파일 내용은 다음과 같습니다.

으아아아

하지만 갈등을 해결한다면. . 그러면 이후의 모든 commit 정보가 손실됩니다. .
그렇다면 제가 생각할 수 있는 가장 어리석은 방법은 두 번째 commit 지점으로 돌아가서 모든 것을 다시 수정하는 것입니다. .
그러나 세 번째와 네 번째 수정본이 특히 큰 경우에는 그렇습니다. . 그게 더 귀찮을 텐데.
다음 commit을 잃지 않고 두 번째 commit을 성공적으로 수정할 수 있도록 이 충돌을 해결하려면 어떻게 해야 합니까? .
내 생각이 틀렸을 수도 있습니다. . 여러분, 좋은 생각이 있나요? . 무릎을 꿇고 모두에게 감사드립니다. .

漂亮男人漂亮男人2794일 전651

모든 응답(1)나는 대답할 것이다

  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-02 09:34:51

    1. 이후 커밋이 손실되어서는 안 됩니다. 병합을 완료한 후 git rebase --continue을 다시 실행하세요.

    2. 하지만 저는 개인적으로 귀하의 접근 방식에 동의하지 않습니다. 일반적으로 커밋을 중간에 강제로 변경할 필요는 없으며 새로운 커밋을 다시 제출하면 됩니다.

    회신하다
    0
  • 취소회신하다