git push 후 로컬 및 원격에서 git commit을 실행 취소하려면 어떻게 해야 합니까?
나는 공연을 했습니다.git commit
다음에git push
로컬 및 원격 저장소에서 변경 내용을 되돌리는 방법은 무엇입니까?
$ git log
commit 364705c23011b0fc6a7ca2d80c86cef4a7c4db7ac8
Author: Michael Silver <Michael Silver@gmail.com>
Date: Tue Jun 11 12:24:23 2011 -0700
git reset --hard HEAD~1
git push -f <remote> <branch>
(예: 푸시: git push -f origin bugfix/bug123
)
이렇게 하면 마지막 커밋이 실행 취소되고 업데이트된 기록이 원격으로 푸시됩니다.당신은 통과해야 합니다.-f
왜냐하면 당신은 리모트의 업스트림 히스토리를 대체하고 있기 때문입니다.
편집:
참고로--hard
커밋에 도달할 수 없게 됩니다(즉, 삭제된 것처럼 보이지만 그래도 됩니다).git show <hash>
또는git log <hash>
해시를 기억하는 경우).변경 내용을 유지하려면 다음을 실행합니다.
git reset [--mixed] HEAD~1
이 시점에서 사용했기 때문에 단계별 변경 사항이 있습니다.--mixed
기본값입니다.
먼저 원격 트리를 업데이트할 수 있습니다(즉, 커밋 제거). git push -f <remote> <branch>
변경사항이 로컬에 남아 있으므로 다른 분기를 생성하여commit
그곳에 있는 그들(그리고)push
적당하다고 생각되는 대로).
일반적으로 다음을 사용하여 "역" 커밋을 수행합니다.
git revert 364705c
그런 다음 평소처럼 원격으로 전송합니다.
git push
이렇게 하면 커밋이 삭제되지 않습니다. 첫 번째 커밋이 수행한 작업을 취소하는 추가 커밋이 만들어집니다.특히 변경사항이 이미 전파되었을 때, 실제로 안전하지 않은 다른 모든 것.
우선, 긴장을 푸세요.
"어떤 것도 우리의 통제하에 있지 않습니다.우리의 통제는 환상에 불과합니다." "오류는 인간입니다."
당신이 의도치 않게 코드를 밀어넣었다는 것을 이해합니다.remote-master
이것은 괜찮을 것입니다.
처음에는, 다음과 같은 것을 얻으십시오.SHA-1
반환하려는 커밋 값(예: 마스터 분기에 커밋). 다음을 실행합니다.
git log
각 커밋과 함께 문자열과 같은 'f650a9e398ad9ca606b25513bd4af9fe...'가 표시됩니다.반환할 커밋에서 해당 번호를 복사합니다.
이제 아래 명령을 입력합니다.
git reset --hard your_that_copied_string_but_without_quote_mark
"HEAD is now."와 같은 메시지가 표시되어야 합니다. 당신은 안전합니다.그것이 방금 한 것은 지역적으로 그 변화를 반영하는 것입니다.
이제 아래 명령을 입력합니다.
git push -f
당신은 다음과 같이 봐야 합니다.
"경고: push.default는 설정되지 않았습니다. 암시적 값이 변경되었습니다...총 0(델타 0), 재사용된 0(델타 0) ... your_branch_name -> 마스터(강제 업데이트)"
이제, 당신들은 모두 안전합니다."git log"로 마스터를 다시 확인하십시오. fixed_destination_commit이 목록의 맨 위에 있어야 합니다.
천만에요 (미리 ; )
업데이트:
이제, 이 모든 것이 시작되기 전에 당신이 했던 변화는 이제 사라졌습니다.만약 당신이 그 힘든 일들을 다시 되돌리고 싶다면, 가능합니다.git reflog와 git cherry-pick 명령 덕분입니다.
이를 위해 이 블로그나 이 게시물을 팔로우 해주시기 바랍니다.
git reset HEAD~1
변경사항을 삭제하지 않으려면(변경사항을 분류하지 않음). 밀어넣기 변경, 커밋다푸git push -f [origin] [branch]
사용해 보십시오.
git reset --hard <commit id>
참고: 여기서 commit id는 사용자가 이동할 커밋의 id가 되지만 재설정할 id는 아닙니다.이것이 저도 막히게 된 유일한 지점이었습니다.
그다음에 밀어요
git push -f <remote> <branch>
대화형 기본 재배치를 수행할 수 있습니다.
git rebase -i <commit>
기본 편집기가 나타납니다.삭제할 커밋이 포함된 줄을 삭제하여 해당 커밋을 삭제합니다.
물론 이 변경 사항을 적용하려면 원격 저장소에도 액세스해야 합니다.
다음 질문을 참조하십시오.Git: 리포지토리에서 선택한 커밋 제거
또는 다음과 같습니다.
git push origin +364705c23011b0fc6a7ca2d80c86cef4a7c4db7ac8^:master
오리진 원격 저장소의 마스터 분기를 마지막 커밋의 상위 항목으로 강제 적용
용사를 합니다.git reset --hard HEAD~1
대부분의 경우 로컬에서 마지막 커밋을 실행 취소하지만 로컬 변경 내용도 손실됩니다.
로컬 변경 내용을 손실하지 않고 마지막 커밋을 실행 취소하려면 다음을 수행합니다.
git reset HEAD~1
원점으로 을 실행 합니다(예:<remote> == origin
)
git push -f origin <branch>
언급URL : https://stackoverflow.com/questions/6459080/how-can-i-undo-a-git-commit-locally-and-on-a-remote-after-git-push
'source' 카테고리의 다른 글
시스템.Linq.Dynamic이 OrderByDescending("일부 열")을 지원하지 않습니까? (0) | 2023.05.27 |
---|---|
Azure KeyVault에서 연결 문자열을 가져오는 방법은 무엇입니까? (0) | 2023.05.27 |
Postgre는 어디에 있습니까?macOS의 SQL 로그? (0) | 2023.05.27 |
데이터베이스를 한 MongoDB 서버에서 다른 서버로 복사하려면 어떻게 해야 합니까? (0) | 2023.05.27 |
IIS 7.5 및 ASP.NET v2가 설치된 HTTP 500.19 웹 응용 프로그램 문제(web.config 오류) (0) | 2023.05.27 |