꺼내기 요청으로 병합을 취소하시겠습니까?
누군가가 해서는 안 될 당기기 요청을 수락했습니다.이제 우리는 많은 고장난 코드들이 합쳐졌습니다.꺼내기 요청을 실행 취소하는 방법은 무엇입니까?병합 직전에 변경된 내용을 커밋으로 되돌리려고 했는데 여러 커밋으로 병합된 것을 확인했습니다.이제 합병 며칠 전부터 이 사람이 저지른 모든 커밋이 있습니다.이걸 어떻게 되돌리죠?
이 문제에 대한 더 나은 답이 있습니다. 하지만 저는 이것을 단계별로 분류할 수 있습니다.
다음과 같은 최신 업스트림 변경 사항을 가져와 확인해야 합니다.
git fetch upstream
git checkout upstream/master -b revert/john/foo_and_bar
커밋 로그를 보면 다음과 유사한 내용을 찾을 수 있습니다.
commit b76a5f1f5d3b323679e466a1a1d5f93c8828b269 Merge: 9271e6e a507888 Author: Tim Tom <tim@tom.com> Date: Mon Apr 29 06:12:38 2013 -0700 Merge pull request #123 from john/foo_and_bar Add foo and bar commit a507888e9fcc9e08b658c0b25414d1aeb1eef45e Author: John Doe <john@doe.com> Date: Mon Apr 29 12:13:29 2013 +0000 Add bar commit 470ee0f407198057d5cb1d6427bb8371eab6157e Author: John Doe <john@doe.com> Date: Mon Apr 29 10:29:10 2013 +0000 Add foo
이제 전체 꺼내기 요청을 나중에 되돌리는 기능으로 되돌리려고 합니다.이렇게 하려면 병합 커밋의 ID를 가져와야 합니다.
위의 예에서 병합 커밋은 "병합된 풀 요청 #123..."이라고 표시되는 맨 위 커밋입니다.
이렇게 하면 두 변경 사항("Add bar" 및 "Add foo")을 모두 되돌릴 수 있습니다. 그러면 한 번의 커밋으로 전체 풀 요청을 되돌릴 수 있으며 나중에 이 풀 요청을 되돌리고 변경 기록을 깨끗하게 유지할 수 있습니다.
git revert -m 1 b76a5f1f5d3b323679e466a1a1d5f93c8828b269
커밋 그래프(기트 또는 유사한 프로그램 포함)를 확인합니다.꺼내기 요청의 커밋을 볼 수 있고, 사용자 자신의 커밋과 병합 커밋(빠른 전달 병합이 아닌 경우)을 볼 수 있습니다.병합하기 전에 마지막 커밋을 찾은 다음 분기를 이 커밋으로 재설정하면 됩니다.
(지점의 reflog가 있는 경우 병합 전에 커밋을 찾는 것이 훨씬 더 쉬울 것입니다.)
(댓글에 더 많은 정보를 입력한 후 편집:)
마지막(맨 오른쪽) 커밋은 여기에 표시된 파란색 줄을 병합한 꺼내기 요청에 의한 잘못된 병합이라고 생각합니다.당신의 마지막 좋은 약속은 검은색 선에 있는 것이 될 것입니다. 여기 빨간색으로 표시되어 있습니다.
이 커밋으로 재설정하면 괜찮을 것입니다.
즉, 로컬 작업 복사본에서 다음 작업을 수행합니다(예: gitstash를 사용하여 커밋되지 않은 항목이 더 이상 없는지 확인한 후).
git checkout master
git reset --hard 7a62674ba3df0853c63539175197a16122a739ef
gitk
이제 여러분이 제가 표시한 약속에 정말로 참여하고 있는지 확인해 보세요. 그러면 여러분은 그 조상에서 뽑힌 것들을 볼 수 없을 것입니다.
git push -f origin master
당신의 이 (Github 리모지정경된우이름이의컨g)▁your경우▁(▁is된▁()인 경우)origin
그렇지 않으면 이름을 변경합니다.
이제 모든 것이 깃허브에서도 올바르게 보일 것입니다.커밋은 여전히 당신의 저장소에 있을 것이지만, 어떤 지점에서도 도달할 수 없기 때문에, 그곳에서 해를 끼치지 않을 것입니다. (물론, 그것들은 여전히 로저 팔라딘의 저장소에 있을 것입니다.)
(같은 작업을 수행하는 데 Github의 특정 웹 전용 방법이 있을 수 있지만 Github과 풀 요청 관리 시스템에 대해 잘 알지 못합니다.)
다른 사용자가 이미 잘못된 커밋으로 마스터를 끌어냈을 수도 있는 경우, 새 마스터 버전으로 재설정하기 전에 현재 사용자와 동일한 문제가 발생하여 실제로 다시 사용할 수 없습니다.
일이 , 이문가발가높단문경싶우피은고하제를 하세요.git revert
를 입력합니다.git reset
이전 버전으로 되돌리는 대신 새 커밋으로 변경 내용을 되돌립니다. (일부 사용자는 게시된 분기로 재설정하면 안 된다고 생각합니다.)이 작업을 수행하는 방법에 대한 이 질문에 대한 자세한 내용은 다음과 같습니다.
미래를 위해:
Roger 중 Roger Paladin을 사용하는 것을 해 보십시오.cherry-pick
에 merge
또는 Roger Paladin에게 전달하여 별도의 지점으로 이동하고 새 풀 요청을 보냅니다.
만약 그가 마지막으로 한 일이 당겼다면,
git reset --hard HEAD~1
2014년 6월 24일부터 다음을 통해 PR을 쉽게 취소할 수 있습니다("풀 요청 되돌리기" 참조).
되돌리기를 클릭하면 GitHub에서 꺼내기 요청을 쉽게 되돌릴 수 있습니다.
되돌린 변경 사항으로 새 꺼내기 요청을 만들라는 메시지가 표시됩니다.
그러나 이 복구가 사용되는지 여부는 테스트해야 합니다.-m
또는 그렇지 않음( 병합을 되돌리는 경우에도 사용)
그러나 Adil H Raza는 논평에서 다음과 같이 덧붙입니다(2019년 12월).
입니다. 새 하면 이 새의 "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "
master
.
필요한 할 수 안전한 것이 . 가장 안전한 옵션이며 직접 변경하지 않습니다.master
.
경고: Korayem은 댓글에서 다음과 같이 지적합니다.
되돌린 후 Git 분기에서 몇 가지 추가 변경을 수행하고 동일한 소스/대상 분기에서 새 PR을 생성했다고 가정해 보겠습니다.
PR에는 새로운 변경 사항만 표시되고 반환 전에는 어떤 내용도 표시되지 않습니다.
Korayem은 우리를 "Github: 자세한 내용은 "(,git cherry-pick
)"를 반환한 후 변경 내용이 무시됩니다.
또한:
풀 요청을 되돌리기 위한 API(2023년 1월)
이제 GraphQL 변환을 사용하여 병합된 꺼내기 요청을 되돌릴 수 있습니다.
웹의 풀 요청 페이지에서 되돌리기 작업과 마찬가지로 이 API를 호출하면 병합된 풀 요청에 의해 변경된 내용을 되돌리는 새 풀 요청이 생성됩니다.
꺼내기 요청을 되돌리는 방법에 대해 자세히 알아봅니다.
삭제하지 않을 커밋이 있는 Github Pull 요청을 실행 취소하려면 다음을 실행해야 합니다.
git reset --hard --merge <commit hash>
꺼내기 요청을 병합하기 전의 커밋이 커밋 해시입니다.이렇게 하면 기록 내의 커밋에 영향을 주지 않고 꺼내기 요청에서 모든 커밋이 제거됩니다.
이 필드를 찾는 좋은 방법은 현재 닫힌 끌어오기 요청으로 이동하여 다음 필드를 찾는 것입니다.
를 실행한 후git reset
실행:
git push origin --force <branch name>
이렇게 하면 풀 요청의 커밋 기록에 포함된 분기의 커밋에 영향을 주지 않고 풀 요청 전에 분기를 되돌립니다.
편집:
꺼내기 요청에서 되돌리기 버튼을 클릭하면 분기에 추가 커밋이 생성됩니다.커밋을 해제하거나 병합을 해제하지 않습니다.즉, 되돌리기 버튼을 누른 경우 새 꺼내기 요청을 열어 이 코드를 모두 다시 추가할 수 없습니다.
저는 이곳을 항상 이용합니다, 감사합니다.
풀 요청을 취소하는 방법을 찾다가 여기에 왔습니다.
나는 막.git reset --hard
"오래 전에" 그리고 당기기 요청을 하기 전에 제가 있던 곳으로 빠르게 돌아갑니다.
여기를 보는 것 외에도, 저는 제 동료에게 그가 무엇을 할 것인지 물었고, 그는 전형적으로 좋은 대답을 했습니다: 위의 첫 번째 대답의 예제 출력 사용:
git reset --hard 9271e6e
Git의 대부분의 일들과 마찬가지로, 만약 여러분이 그것을 쉽지 않은 방법으로 하고 있다면, 여러분은 아마도 그것을 잘못하고 있을 것입니다.
우리가 다음 단계를 따를 수 있도록 끌어오기 요청을 취소하려면,
활동 목록 모두 꺼내기 요청 -
git reflog
위의 명령을 실행하면 이 출력이 발생합니다.
reset 명령을 실행합니다.
git reset --hard 6954dff92
여기서 6954dff92 병합 ID 및 병합 ID를 기반으로 코드가 업데이트됩니다.
감사합니다, 도움이 되길 바랍니다, 좋아요, 응원 부탁드립니다.
다음 명령을 지정하면 커밋, 병합을 포함한 활동 목록이 표시됩니다.
git reflog
마막약다같합니다야아과음에 있을 입니다.'HEAD@{0}'
커밋 메시지에서도 동일한 내용을 확인할 수 있습니다.해당 지점으로 이동하려면 다음 명령을 사용합니다.
git reset --hard 'HEAD@{0}'
병합이 반환됩니다.새 파일이 남아 있는 경우 병합에서 변경 내용을 삭제합니다.
언급URL : https://stackoverflow.com/questions/6481575/undo-a-merge-by-pull-request
'programing' 카테고리의 다른 글
CTE를 사용하여 표 업데이트 (0) | 2023.06.26 |
---|---|
오라클 DB에 마지막으로 삽입된 레코드의 ID 가져오기 (0) | 2023.06.26 |
복잡한 Vuex 저장소에 의존하고 다른 구성 요소를 확장하는 Vue.js 구성 요소를 유닛 테스트하려면 어떻게 해야 합니까? (0) | 2023.06.26 |
Excel(2007) VBA - .따옴표가 포함된 공식 (0) | 2023.06.26 |
하위 MSBuild.exe 프로세스를 성공적으로 시작하거나 연결하지 못했습니다.MSBuild.exe를 확인합니다. (0) | 2023.06.26 |