programing

꺼내기 요청으로 병합을 취소하시겠습니까?

skycolor 2023. 6. 26. 21:12
반응형

꺼내기 요청으로 병합을 취소하시겠습니까?

누군가가 해서는 안 될 당기기 요청을 수락했습니다.이제 우리는 많은 고장난 코드들이 합쳐졌습니다.꺼내기 요청을 실행 취소하는 방법은 무엇입니까?병합 직전에 변경된 내용을 커밋으로 되돌리려고 했는데 여러 커밋으로 병합된 것을 확인했습니다.이제 합병 며칠 전부터 이 사람이 저지른 모든 커밋이 있습니다.이걸 어떻게 되돌리죠?

이 문제에 대한 더 나은 답이 있습니다. 하지만 저는 이것을 단계별로 분류할 수 있습니다.

다음과 같은 최신 업스트림 변경 사항을 가져와 확인해야 합니다.

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가 있는 경우 병합 전에 커밋을 찾는 것이 훨씬 더 쉬울 것입니다.)


(댓글에 더 많은 정보를 입력한 후 편집:)

좋아요. 그래프를 보겠습니다.

screenshot 1

마지막(맨 오른쪽) 커밋은 여기에 표시된 파란색 줄을 병합한 꺼내기 요청에 의한 잘못된 병합이라고 생각합니다.당신의 마지막 좋은 약속은 검은색 선에 있는 것이 될 것입니다. 여기 빨간색으로 표시되어 있습니다.

enter image description here

이 커밋으로 재설정하면 괜찮을 것입니다.

즉, 로컬 작업 복사본에서 다음 작업을 수행합니다(예: 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-pickmerge또는 Roger Paladin에게 전달하여 별도의 지점으로 이동하고 새 풀 요청을 보냅니다.

만약 그가 마지막으로 한 일이 당겼다면,

git reset --hard HEAD~1

2014년 6월 24일부터 다음을 통해 PR을 쉽게 취소할 수 있습니다("풀 요청 되돌리기" 참조).

되돌리기 버튼 소개

되돌리기를 클릭하면 GitHub에서 꺼내기 요청을 쉽게 되돌릴 수 있습니다.

https://camo.githubusercontent.com/0d3350caf2bb1cba53123ffeafc00ca702b1b164/68747470733a2f2f6769746875622d696d616765732e73332e616d617a6f6e6177732e636f6d2f68656c702f70756c6c5f72657175657374732f7265766572742d70756c6c2d726571756573742d6c696e6b2e706e67

되돌린 변경 사항으로 새 꺼내기 요청을 만들라는 메시지가 표시됩니다.

https://camo.githubusercontent.com/973efae3cc2764fc1353885a6a45b9a518d9b78b/68747470733a2f2f6769746875622d696d616765732e73332e616d617a6f6e6177732e636f6d2f68656c702f70756c6c5f72657175657374732f7265766572742d70756c6c2d726571756573742d6e65772d70722e706e67

그러나 이 복구가 사용되는지 여부는 테스트해야 합니다.-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>

꺼내기 요청을 병합하기 전의 커밋이 커밋 해시입니다.이렇게 하면 기록 내의 커밋에 영향을 주지 않고 꺼내기 요청에서 모든 커밋이 제거됩니다.

이 필드를 찾는 좋은 방법은 현재 닫힌 끌어오기 요청으로 이동하여 다음 필드를 찾는 것입니다.

Pull Request Image 요청 이미지 꺼내기

를 실행한 후git reset실행:

git push origin --force <branch name>

이렇게 하면 풀 요청의 커밋 기록에 포함된 분기의 커밋에 영향을 주지 않고 풀 요청 전에 분기를 되돌립니다.

편집:

꺼내기 요청에서 되돌리기 버튼을 클릭하면 분기에 추가 커밋이 생성됩니다.커밋을 해제하거나 병합을 해제하지 않습니다.즉, 되돌리기 버튼을 누른 경우 새 꺼내기 요청을 열어 이 코드를 모두 다시 추가할 수 없습니다.

저는 이곳을 항상 이용합니다, 감사합니다.

풀 요청을 취소하는 방법을 찾다가 여기에 왔습니다.

나는 막.git reset --hard"오래 전에" 그리고 당기기 요청을 하기 전에 제가 있던 곳으로 빠르게 돌아갑니다.

여기를 보는 것 외에도, 저는 제 동료에게 그가 무엇을 할 것인지 물었고, 그는 전형적으로 좋은 대답을 했습니다: 위의 첫 번째 대답의 예제 출력 사용:

git reset --hard 9271e6e

Git의 대부분의 일들과 마찬가지로, 만약 여러분이 그것을 쉽지 않은 방법으로 하고 있다면, 여러분은 아마도 그것을 잘못하고 있을 것입니다.

우리가 다음 단계를 따를 수 있도록 끌어오기 요청을 취소하려면,

활동 목록 모두 꺼내기 요청 -

git reflog

enter image description here

위의 명령을 실행하면 이 출력이 발생합니다.

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

반응형