누락 된 파일을 포함하도록 과거 커밋을 변경하는 방법은 무엇입니까?
변경 사항을 커밋했고 변경 세트에 파일을 추가하는 것을 잊었습니다. 다른 커밋 후 파일이 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 ' 일?받아 들여진 대답에서 말했듯이 :
이런 방식으로 원격 저장소에 푸시 된 커밋을 수정해서는 안됩니다. 이 경우 누락 된 파일이있는 새 커밋을 추가하는 것이 좋습니다.
The answer why, is in the Git Book (paragraph entitled "The Perils of Rebasing"):
Do not rebase commits that exist outside your repository.
If you follow that guideline, you’ll be fine. If you don’t, people will hate you, and you’ll be scorned by friends and family.
When you rebase stuff, you’re abandoning existing commits and creating new ones that are similar but different. If you push commits somewhere and others pull them down and base work on them, and then you rewrite those commits with git rebase and push them up again, your collaborators will have to re-merge their work and things will get messy when you try to pull their work back into yours.
[...]
참고URL : https://stackoverflow.com/questions/14369155/how-to-change-past-commit-to-include-a-missed-file
'Programing' 카테고리의 다른 글
MySQL 연결이 작동하지 않음 : 2002 해당 파일 또는 디렉토리가 없습니다. (0) | 2020.08.27 |
---|---|
UICollectionView의 셀을 중앙 정렬하는 방법은 무엇입니까? (0) | 2020.08.27 |
특정 프로세스가 32 비트인지 64 비트인지 프로그래밍 방식으로 확인하는 방법 (0) | 2020.08.27 |
배열에 다른 배열의 모든 배열 값이 포함되어 있는지 PHP 확인 (0) | 2020.08.27 |
파이썬에 // 연산자에 해당하는 상한선이 있습니까? (0) | 2020.08.27 |