변경 사항을 커밋했고 변경 세트에 파일을 추가하는 것을 잊었습니다. 다른 커밋 후 파일이 HEAD^4
커밋 에서 누락되었음을 깨달았습니다 .
누락 된 파일을 포함하도록 이전 커밋을 어떻게 다시 작성합니까?
답변
수정하려는 커밋에 대한 옵션을 사용 git rebase --interactive HEAD~4
하고 설정 하십시오 edit
.
당신이 기억 안 이 방법 원격 저장소에 밀어 커밋을 수정합니다. 이 경우 누락 된 파일이있는 새 커밋을 추가하는 것이 좋습니다.
답변
사람들이 Google에서 더 간단한 답을 찾기 위해 여기로 올 수 있다는 것을 알고 있습니다 . 마지막 커밋이라면 어떨까요?
(OP의 질문은 역사상 4 번째 커밋을 수정하는 것입니다)
커밋하고 즉시 파일을 추가하는 것을 잊은 경우 다음을 수행하십시오.
# edited file-that-i-remember.txt
git add file-that-i-remember.txt
git commit
# realize you forgot a file
git add file-that-i-forgot.txt
git commit --amend --no-edit
어디 --no-edit
동일한 커밋 메시지를 보관할 것입니다.
쉬워요!
답변
이 4 개의 커밋을 푸시하지 않은 경우 다음과 같이 할 수 있습니다.
이러한 모든 커밋에 대한 패치 파일을 만듭니다.
git format-patch -4
커밋 4 개 뒤로 되감기 :
git reset --hard HEAD~4
누락 된 파일 추가 :
git add missing-file
그것을 약속 --amend
:
git commit --amend
저장된 모든 패치를 다시 적용하십시오.
git am *.patch
밀었다면이 방법을 사용하지 마십시오. 대신 실수를 인정하고이 문제를 해결하는 HEAD 위에 커밋을 하나 더 만드십시오.
답변
허용되는 답변은 정확하지만 리베이스 프로세스 중에 커밋을 편집하는 방법에 대한 자세한 지침이 없습니다.
-
먼저 리베이스 프로세스를 시작하십시오.
git rebase --interactive HEAD~4
-
커밋 목록이 표시되면 단어
pick
를 변경하여 편집 할 커밋을 선택edit
하고 파일을 저장합니다. -
코드에서 필요한 수정을합니다 (
git add
새 파일 을 호출 하는 것을 잊지 마십시오 ) -
모든 수정이 완료된 후 발행하십시오
git commit --amend
. 이것은 다음과 같이 표시된 커밋을 수정합니다.edit
-
git rebase --continue
프로세스를 완료 할 호출 (으로 표시된 커밋이 더있는 경우edit
위 단계를 반복해야 함)
중요 사항 :
-
pick
편집하지 않으려는 줄은 제거 하지 말고 그대로 두십시오. 이 줄을 삭제하면 관련 커밋이 삭제됩니다. -
GIT
stash
는 작업 디렉토리가 깨끗하지 않은 경우 리베이스 하기 전에 강제합니다 . 그러나git stash pop / git stash apply
리베이스 중에 이러한 변경 사항 (즉, 리베이스 프로세스를 시작하기 전에 숨겨진 변경 사항)을 다음과 같이 표시된 커밋으로 수정하기 위해edit
-
무언가 잘못되어 리베이스 프로세스가 완료되기 전에 변경된 사항을 되돌리려면 (즉, 리베이스를 시작하기 전 지점으로 되돌리려는 경우) 다음을 사용하십시오
git rebase --abort
.-또한 읽으십시오 : –abort if –abort does ‘ 일? -
받아 들여진 대답에서 말했듯이 :
이런 방식으로 원격 저장소에 푸시 된 커밋을 수정해서는 안됩니다. 이 경우 누락 된 파일이있는 새 커밋을 추가하는 것이 좋습니다.
그 이유에 대한 답은 Git Book ( ” Rebasing의 위험 “이라는 제목의 단락 )에 있습니다.
저장소 외부에있는 커밋을 리베이스하지 마십시오.
이 지침을 따르면 괜찮을 것입니다. 그렇지 않으면 사람들이 당신을 미워할 것이고 당신은 친구와 가족들에게 멸시를 당할 것입니다.
리베이스 할 때 기존 커밋을 버리고 비슷하지만 다른 커밋을 새로 만듭니다. 커밋을 어딘가에 푸시하고 다른 사람들이 커밋을 풀다운하고 기본 작업을 수행 한 다음 해당 커밋을 git rebase로 다시 작성하고 다시 밀어 올리면 공동 작업자가 작업을 다시 병합해야하며 시도 할 때 작업이 지저분해질 것입니다. 그들의 작업을 당신의 것으로 되돌립니다.
[…]