ProgramingTip

풀 요청에서 커밋을 제거하는 방법

bestdevel 2020. 10. 29. 08:23
반응형

풀 요청에서 커밋을 제거하는 방법


풀 리퀘스트를했지만 그 후 로컬에서 풀 리퀘스트를 오염시킨 프로젝트에 커밋을 한 후 제거했지만 운이 없었습니다.

StackOverflow에서 질문을 찾았지만 거기에있는 내용을 적용 할 수 없습니다. GitHub의 첫 번째 풀 요청이 모든 것이 어떻게 작동하는지 이상합니다.

강조 커밋은 다른 모든 항목을 유지하고 제거해야하는 커밋입니다. 병합 작업을하기 때문에 역사상 네 번째 커밋이됩니다.

여기에 이미지 설명 입력

내 마이 로그 여기에 이미지 설명 입력

누군가가 무슨 일이 일어나고 나타나이 문제를 해결하는 방법을 설명해 주시겠습니까?


이를 수행하는 몇 가지 기술이 있습니다.

이 게시물-되돌리기에 대한 부분을 개발면 우리가 원하는 작업과 수행 방법에 대해 자세히 설명합니다.

문제에 대한 가장 간단한 해결은 다음과 가능합니다.

# Checkout the desired branch
git checkout <branch>

# Undo the desired commit
git revert <commit>

# Update the remote with the undo of the code
git push origin <branch>

revert 명령은 원래 커밋 실행 취소새 커밋을 만듭니다 .


사람들은 잘못된 커밋의 변경 사항을 취소하기 위해 잘못된 커밋 및 되돌리기 커밋을보고 싶어하지 않을 것입니다. 이것은 커밋 기록을 오염시킵니다.

다음은 커밋 되돌리기로 변경 사항을 취소하는 대신 잘못된 커밋을 제거하는 간단한 방법입니다.

  1. git checkout my-pull-request-branch

  2. git rebase -i HEAD~n// 여기서는 n대화 형 리베이스에 포함 할 마지막 커밋의 수입니다.

  3. 교체 pickdrop당신은 폐기하려는 커밋합니다.
  4. 저장하고 종료.
  5. git push --force

따라서 다음을 수행하십시오.

브랜치 이름이 my_branch이고 추가 커밋이 있다고 가정 해 보겠습니다.

  1. git checkout -b my_branch_with_extra_commits (이 브랜치를 다른 이름으로 저장)
  2. gitk (git 콘솔을 엽니 다)
  3. 유지하려는 커밋을 찾으십시오. 해당 커밋의 SHA를 메모장에 복사합니다.
  4. git checkout my_branch
  5. gitk (이렇게하면 git 콘솔이 열립니다.)
  6. 되돌리려는 커밋 (변경 전 상태)을 마우스 오른쪽 버튼으로 클릭하고 " reset branch to here"를 클릭합니다 .
  7. git pull --rebase origin branch_name_to _merge_to
  8. git cherry-pick <SHA you copied in step 3. >

이제 로컬 브랜치 커밋 기록을보고 모든 것이 잘 보이는지 확인하십시오.


커밋을 제거하고 변경 사항을 유지하고 싶지 않은 경우 @ferit에 좋은 솔루션이 있습니다.

해당 커밋을 현재 브랜치에 추가하고 싶지만 현재 홍보의 일부가되는 것이 의미가 없다면 대신 다음을 수행 할 수 있습니다.

  1. 사용하다 git rebase -i HEAD~n
  2. 제거하려는 커밋을 맨 아래 (가장 최근) 위치로 바꿉니다.
  3. 저장하고 종료
  4. 사용 git reset HEAD^ --soft변경 사항을 uncommit하고이 상태를 무대에 다시 얻을.
  5. git push --force제거 된 커밋없이 원격 분기를 업데이트하는 데 사용 합니다.

이제 원격에서 커밋을 제거했지만 로컬에서 변경 사항은 그대로 유지됩니다.

참고 URL : https://stackoverflow.com/questions/36168839/how-to-remove-commits-from-a-pull-request

반응형