오늘 그런 상황에 직면했습니다. 오랫동안 공부했는데 어떻게 해야할지 모르겠습니다. 예를 들어 오늘은 많은 기능을 작성했는데 모두 commit
였습니다. 예를 들어 commit
의 기록은 다음과 같습니다. commit message
은 각각 "1, 2, 3, 4"로 첫 번째부터 네 번째까지를 나타냅니다. 제출.
매번 동일한 파일을 test.md
수정한다고 가정해 보겠습니다. 4번 제출 후 파일 내용은 다음과 같습니다.
은 제출할 때마다 한 줄씩 추가된다는 뜻이며, 해당 내용이 이 제출의 commit message
입니다.
그런데 두 번째 제출에서 실수가 있어 수정이 필요하다는 사실을 알게 되었습니다. git rebase -i HEAD~3
대화형 페이지에 들어가려면
을 사용하세요. 아래와 같이 두 번째 제출물 앞의 pick
를 e
로 변경하면 두 번째 제출물을 수정할 수 있습니다.
이때 test.md
내부 내용은 다음과 같습니다.
그런 다음 뭔가를 추가해야 합니다. 예를 들어 5
를 새 줄에 쓰고 git add .
, git commit --amend
두 번째 commit
가 변경됩니다. 그럼 당연히 git rebase --continue
를 실행하세요. 3번째 제출시에는 3번째 줄의 내용이 3
이어야 하는데, 이때 2번째 제출에서는 보완이 필요해서 3번째 줄에 새로운 내용을 추가했기 때문에 충돌이 발생합니다. 반드시 충돌이 발생하므로 git rebase --continue
을 실행하기 전에 이 충돌을 해결해야 합니다. 이때 파일 내용은 다음과 같습니다.
하지만 갈등을 해결한다면. . 그러면 이후의 모든 commit
정보가 손실됩니다. .
그렇다면 제가 생각할 수 있는 가장 어리석은 방법은 두 번째 commit
지점으로 돌아가서 모든 것을 다시 수정하는 것입니다. .
그러나 세 번째와 네 번째 수정본이 특히 큰 경우에는 그렇습니다. . 그게 더 귀찮을 텐데.
다음 commit
을 잃지 않고 두 번째 commit
을 성공적으로 수정할 수 있도록 이 충돌을 해결하려면 어떻게 해야 합니까? .
내 생각이 틀렸을 수도 있습니다. . 여러분, 좋은 생각이 있나요? . 무릎을 꿇고 모두에게 감사드립니다. .
曾经蜡笔没有小新2017-05-02 09:34:51
이후 커밋이 손실되어서는 안 됩니다. 병합을 완료한 후 git rebase --continue
을 다시 실행하세요.
하지만 저는 개인적으로 귀하의 접근 방식에 동의하지 않습니다. 일반적으로 커밋을 중간에 강제로 변경할 필요는 없으며 새로운 커밋을 다시 제출하면 됩니다.