꺼내기 요청에서 커밋을 제거하는 방법
저는 당김 요청을 했지만, 그 후 지역적으로 프로젝트에 커밋을 하여 제 당김 요청을 오염시켰지만, 제거하려고 했지만 실패했습니다.
StackOverflow에서 몇 가지 유사한 질문을 찾았지만 내용을 적용할 수 없습니다.GitHub에 대한 첫 번째 풀 요청이기 때문에 이 모든 것이 어떻게 작동하는지 약간 이상합니다.
강조 표시된 커밋은 제가 보관하고 다른 모든 항목을 제거해야 하는 커밋입니다.제가 합병하는 것들을 만들기 때문에 역사상 네 번째 커밋이 됩니다.
나의 일기장
누가 무슨 일이 일어나고 있고 어떻게 이 문제를 해결하는지 설명해 주시겠습니까?
사람들은 잘못된 커밋과 잘못된 커밋의 변경을 취소하기 위한 되돌리기 커밋을 보고 싶어하지 않습니다.이 오염은 기록을 범합니다.
다음은 되돌리기 커밋으로 변경 내용을 취소하는 대신 잘못된 커밋을 제거하는 간단한 방법입니다.
git checkout my-pull-request-branch
git rebase -i HEAD~n
어디서n
대화형 기본 재배치에 포함할 마지막 커밋 수입니다.- 교체하다
pick
와 함께drop
삭제할 커밋의 경우. - 저장하고 종료합니다.
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의 일부가 되는 것이 의미가 없는 경우 대신 다음을 수행할 수 있습니다.
- 사용하다
git rebase -i HEAD~n
- 제거할 커밋을 맨 아래(가장 최근) 위치로 맞춥니다.
- 저장 및 종료
- 사용하다
git reset HEAD^ --soft
변경 사항을 커밋 해제하고 스테이징된 상태로 되돌립니다. - 사용하다
git push --force
제거된 커밋 없이 원격 분기를 업데이트합니다.
이제 원격에서 커밋을 제거했지만 로컬에서 변경 사항이 유지됩니다.
이것이 저에게 도움이 되었습니다.
기존 분기를 사용하여 새 분기를 만듭니다.기존의 것을 부르자.
branch_old
로서 새로운branch_new
.리셋
branch_new
커밋하는 데 전혀 문제가 없을 때 안정적인 상태로.예를 들어, 로컬 마스터 수준에 배치하려면 다음을 수행합니다.git reset — 하드 마스터 git push — 강제 원점
cherry-pick
의 .branch_old
안으로branch_new
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이고 추가 커밋이 있다고 가정해 보겠습니다.
git checkout -b my_branch_with_extra_commits
이름으로 으)로 유지합니다.gitk
열기콘솔 열기)- 유지할 커밋을 찾습니다.해당 커밋의 SHA를 메모장에 복사합니다.
git checkout my_branch
gitk
콘솔이- 전 을 마우스 오른쪽 버튼으로 한 후 " " " " " (" (" " " " " " 를합니다.
reset branch to here
" - 를 .
git pull --rebase origin branch_name_to _merge_to
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
'programing' 카테고리의 다른 글
:not() 유사 클래스에 여러 개의 인수가 있을 수 있습니까? (0) | 2023.06.28 |
---|---|
클래스 인스턴스가 아닌 클래스 자체에 대한 사용자 지정 문자열 표현을 선택하려면 어떻게 해야 합니까? (0) | 2023.06.28 |
Oracle SQL - 쉼표에 대한 소수점 변경 (0) | 2023.06.28 |
SQL Server Management Studio GUI에서 반환한 소스와 동일한 SQL Server 저장 프로시저 소스를 프로그래밍 방식으로 검색하시겠습니까? (0) | 2023.06.28 |
양식 인증: 로그인 페이지로 리디렉션 사용 안 함 (0) | 2023.06.28 |