programing

꺼내기 요청에서 커밋을 제거하는 방법

oldcodes 2023. 6. 28. 21:58
반응형

꺼내기 요청에서 커밋을 제거하는 방법

저는 당김 요청을 했지만, 그 후 지역적으로 프로젝트에 커밋을 하여 제 당김 요청을 오염시켰지만, 제거하려고 했지만 실패했습니다.

StackOverflow에서 몇 가지 유사한 질문을 찾았지만 내용을 적용할 수 없습니다.GitHub에 대한 첫 번째 풀 요청이기 때문에 이 모든 것이 어떻게 작동하는지 약간 이상합니다.

강조 표시된 커밋은 제가 보관하고 다른 모든 항목을 제거해야 하는 커밋입니다.제가 합병하는 것들을 만들기 때문에 역사상 네 번째 커밋이 됩니다.

enter image description here

나의 일기장

누가 무슨 일이 일어나고 있고 어떻게 이 문제를 해결하는지 설명해 주시겠습니까?

사람들은 잘못된 커밋과 잘못된 커밋의 변경을 취소하기 위한 되돌리기 커밋을 보고 싶어하지 않습니다.이 오염은 기록을 범합니다.

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

  1. git checkout my-pull-request-branch

  2. git rebase -i HEAD~n어디서n대화형 기본 재배치에 포함할 마지막 커밋 수입니다.

  3. 교체하다pick와 함께drop삭제할 커밋의 경우.
  4. 저장하고 종료합니다.
  5. git push --force

당신은 그것을 할 수 있는 몇 가지 기술이 있습니다.

이 게시물에서 복구에 대한 부분을 읽고 우리가 무엇을 하고 어떻게 해야 하는지에 대해 자세히 설명할 것입니다.

문제에 대한 가장 간단한 해결책은 다음과 같습니다.

# Checkout the desired branch
git checkout <branch>

# Undo the desired commit
git revert <commit>

# Update the remote with the undo of the code
# The force is a tricky flag since it will force the push but
# your administrator can block it, so if it's not an option you
# can delete the old branch and push it again
git push origin <branch> --force

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

커밋을 제거하고 변경 사항을 유지하지 않으려면 @fer가 좋은 해결책을 제공합니다.

현재 분기에 해당 커밋을 추가하고 싶지만 현재 PR의 일부가 되는 것이 의미가 없는 경우 대신 다음을 수행할 수 있습니다.

  1. 사용하다git rebase -i HEAD~n
  2. 제거할 커밋을 맨 아래(가장 최근) 위치로 맞춥니다.
  3. 저장 및 종료
  4. 사용하다git reset HEAD^ --soft변경 사항을 커밋 해제하고 스테이징된 상태로 되돌립니다.
  5. 사용하다git push --force제거된 커밋 없이 원격 분기를 업데이트합니다.

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

이것이 저에게 도움이 되었습니다.

  1. 기존 분기를 사용하여 새 분기를 만듭니다.기존의 것을 부르자.branch_old로서 새로운branch_new.

  2. 리셋branch_new커밋하는 데 전혀 문제가 없을 때 안정적인 상태로.예를 들어, 로컬 마스터 수준에 배치하려면 다음을 수행합니다.

    git reset — 하드 마스터 git push — 강제 원점

  3. cherry-pick의 .branch_old안으로branch_new

  4. git push

아래 명령에 따라 분기 사격에서

git reset --soft origin/master
git commit -m "Detail of Your last commit that you want to see"
git push -f

그래서 다음을 수행합니다.

지점 이름이 my_branch이고 추가 커밋이 있다고 가정해 보겠습니다.

  1. git checkout -b my_branch_with_extra_commits 이름으로 으)로 유지합니다.
  2. gitk 열기콘솔 열기)
  3. 유지할 커밋을 찾습니다.해당 커밋의 SHA를 메모장에 복사합니다.
  4. git checkout my_branch
  5. gitk 콘솔이
  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. >

이제 로컬 지점 커밋 기록을 보고 모든 것이 정상인지 확인합니다.

실수로 불필요한 파일을 밀어 PR에서 제거하려는 경우

 1. git reset <commit ID wherever you want to jump> 
 
 2. git restore <file name you want to remove> or git add <all the file
    names you want to add to commit>

 3. git commit -m “new commit message”

 4. git push -f //necessary to push forcefully (if anything is there to pull)

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

반응형