GitHub에서 커밋을 삭제하려면 어떻게 해야 하나요?
나는 우연히 GitHub에 대한 약속을 강요했다.
이 커밋을 삭제할 수 있습니까?
이 커밋 전 상태로 GitHub 저장소를 되돌리고 싶습니다.
주의: 다음 중 하나를 참조하십시오.
git rebase -i중 - ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★」
git reset --soft HEAD^
먼저 로컬 저장소에서 커밋을 삭제합니다., 하다, 하다, 하다, 하다를 사용해서 할 수 있어요.git rebase -i커밋인 , " " " , " " " 를 할 수 있습니다git rebase -i HEAD~2표시되는 에디터 창의 두 번째 행을 삭제합니다.
다음 를 합니다.git push origin +branchName --force
자세한 내용은 Git Magic Chapter 5: Lessons of History - Then Some을 참조하십시오(예: 오래된 커밋을 삭제하려는 경우).
, 리, 그, 그, 신, 신, 신, 신, 신, 신, 신, 신, 신, 신, 신, 신, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, oh, ,git stash 번째,두 번째, 두 번째, 세 번째git stash applyafterfilter.filter.를 합니다.
git push -f origin HEAD^:master
그렇게 하면 '억지'가 풀릴 거야
쉽게 되돌릴 수 있도록 다음 방법이 있습니다(커밋 이후 모든 것이 삭제됩니다).
git reset --hard commit_hash_you_want_to_return_to
를 를 과거 .71c27777543ccfcb0376dcdd8f6777df055ef479:
git reset --hard 71c27777543ccfcb0376dcdd8f6777df055ef479
을 ''로 밀어넣는 입니다.origin(그냥)
git push --force
주의
다른 참여자가 지점과 함께 작업하는 경우 지점 이력을 변경할 뿐 아니라 이미 지점을 사용하고 있는 사용자만 변경할 수 있으므로 충돌이나 기타 문제가 발생할 수 있습니다.조심하라.
git log.git push origin +7f6d03:mastercommit. 이전의 입니다.+위한 것이었다force push
그리고 이것이 마지막입니다.
여기 당신의 문제를 쉽고 간단하게 해결할 수 있는 매우 좋은 가이드가 있습니다!
삭제 후 커밋 변경을 유지하는 경우:
삭제할 커밋이 마지막으로 커밋된 커밋일 경우 이 솔루션이 작동합니다.
1 - 로그에서 되돌아가고 싶은 커밋 참조를 복사합니다.
git log
2 - git을 커밋 참조로 리셋합니다.
git reset <commit_ref>
3 - 잘못된 커밋에서 로컬 변경을 저장/저장하여 나중에 리모트에 푸시한 후 사용합니다.
git stash
4 - 변경 내용을 원격 저장소에 푸시합니다(-f 또는 --force).
git push -f
5 - 저장된 변경 내용을 로컬 저장소로 되돌립니다.
git stash apply
7 - 변경에서 추적되지 않은 파일 또는 새 파일이 있는 경우 커밋하기 전에 git에 추가해야 합니다.
git add .
6 - 필요한 변경을 추가한 후 필요한 파일을 커밋합니다(또는 각 파일 이름을 나타내는 대신 점 '.'을 사용하여 로컬저장소의 모든 파일을 커밋합니다).
git commit -m "<new_commit_message>" <file1> <file2> ...
또는
git commit -m "<new_commit_message>" .
캐시를 완전히 지우려면 캐시를 비워야 합니다.git의 이 도움말 페이지가 도움이 될 것입니다.(도움이 되었습니다) http://help.github.com/remove-sensitive-data/
가장 최근의 커밋을 삭제하고, 실행한 작업을 유지합니다.
git reset --soft HEAD~1
최신 커밋을 삭제하여 수행한 작업을 삭제합니다.
git reset --hard HEAD~1
git reset HEAD^ --hard
git push origin -f
난 이게 좋아.
git revert네 힘을 되돌린 것 같아
git-revert - 기존 커밋을 되돌립니다.
git revert [--edit | --no-edit] [-n] [-m parent-number] [-s] <commit>... git revert --continue git revert --quit git revert --abort
관련 패치에 의해 도입된 변경을 되돌리고 이를 기록하는 새로운 커밋을 기록합니다.이를 위해서는 작업 트리가 깨끗해야 합니다(HEAD 커밋에서 수정되지 않음).
주의: git revert는 일부 이전 커밋의 효과를 되돌리기 위해 몇 가지 새로운 커밋을 기록하기 위해 사용됩니다(종종 장애가 있는 커밋만).작업 디렉토리에서 커밋되지 않은 변경을 모두 폐기하려면 git-reset, 특히 --hard 옵션을 참조하십시오.
원격 저장소에서 커밋을 삭제하려면 다음 절차를 수행합니다.
git push -f origin last_known_good_commit:branch_name
로컬 저장소에서 커밋을 삭제하려면 다음 절차를 수행합니다.
git reset --hard HEAD~1
되돌리는 커밋에서 커밋 해시를 알아야 합니다.다음 GitHub URL에서 얻을 수 있습니다.https://github.com/your-organization/your-project/commits/master
커밋의 해시(복귀처)가 「99fb454」(롱버전 「99fb45413eb9ca43063e07b402b136a8cf264」)라고 하면, 다음과 같이 됩니다.
git reset --hard 99fb45413eb9ca4b3063e07b40402b136a8cf264
git push --force
Github에서 브랜치헤드가 되는 커밋의 ref 사양을 찾아 다음 명령을 사용합니다.
git push origin +[ref]:[branchName]
이 경우 커밋을 1개만 되돌리는 경우, 예를 들어 7f6d03과 변경하는 브랜치 이름(예를 들어 마스터)을 찾아 다음 절차를 수행합니다.
git push origin +7f6d03:master
는 러스음음음음음음음음음음음음음음음음 the the the 로 해석됩니다.--force(어느 쪽인가)
주의해 주세요.--force당신의 지사를 합병한 다른 사람들의 역사를 다시 쓸 수도 있는 약속입니다.그러나 다른 사용자가 지점을 병합하기 전에 문제를 신속하게 발견하면 문제가 발생하지 않습니다.
커밋에 중요한 데이터가 있기 때문에 이 작업을 수행하는 경우, 여기서 다른 답변을 사용하는 것은 안전하지 않습니다(서브턱스 제외). 자세한 내용은 설명하겠습니다.
여기에 기재되어 있는 github 가이드에서는 외장 툴을 사용하는 것을 권장하고 있습니다만, 저는 내장 툴을 사용하는 것을 선호합니다.
먼저 저장소의 백업을 만듭니다.그 후, 다음과 같이 입력합니다.
git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA' \
--prune-empty --tag-name-filter cat -- --all
그런 다음 저장소가 원하는 상태인지 확인하십시오.백업과는 다른 것이 좋습니다.
정확하다고 확신하면 됩니다.
#get rid of old unreferenced commits (including the data you want to remove)
git gc --prune=now
git push origin --force --all
만약을 위해 로컬 백업을 잠시 보관하는 것이 좋습니다.
단말기에서 이 명령을 실행합니다.
git reset HEAD~n
마지막 n개의 커밋을 로컬 repo에서 삭제할 수 있습니다.HEAD~ 2 。저장소에서 강제 git push를 계속 진행합니다.
git push -f origin <branch>
이게 도움이 됐으면 좋겠네요!
분기 및 병합 구조를 보존하려면--preserve-merges기본 재배치 수행 시 옵션:
git rebase --preserve-merges -i HEAD^^
GitHub의 경우
- 로컬 저장소의 커밋(HARD) 리셋
- 새 분기를 만듭니다.
- 새 분기를 푸시합니다.
- OLD 브런치를 삭제합니다(마스터 브런치를 삭제할 경우 새 브런치를 기본 브런치로 만듭니다).
먼저 로컬 변경 내용을 측면 어딘가에 저장합니다(백업).
최근 커밋을 검색한 다음 "전체 SHA 복사" 단추를 클릭하여 커밋 해시를 선택하여 클립보드로 전송할 수 있습니다.
마지막 커밋 해시가 g0834hg304gh3084gh라고 합니다(예: ).
다음 작업을 수행해야 합니다.
git push origin +g0834hg304gh3084gh:master
이전에 복사한 해시를 사용하여 "HEAD" 리비전으로 만듭니다.
원하는 로컬 변경을 추가합니다.완료;)
인터랙티브 기본 재배치 작업을 제거하려면
git rebase -i HEAD~4
4 represents total number of commits to display count your commit and그에 따라 그것을 변경하다
목록에서 원하는 커밋을 삭제합니다.
Ctrl+X(ubuntu) 또는 :wq(centos)를 사용하여 변경 내용 저장
두 번째 방법, 되돌리기,
git revert 29f4a2 #your commit ID
특정 커밋을 되돌립니다.
GitHub Desktop에서는 commit을 오른쪽 클릭하여 되돌릴 수 있습니다.이것에 의해, 변경을 원래대로 되돌리는 새로운 커밋이 작성됩니다.
우발적인 커밋은 이력(예를 들어 실수로 API 키 또는 비밀번호를 커밋한 경우 문제가 될 수 있음)에 남지만 코드는 원래대로 돌아갑니다.
이것이 가장 간단하고 쉬운 옵션이며, 수용되는 답변이 보다 포괄적입니다.
을 사용하다를 사용하는 git revert <commit_id>이 명령어는 상기 커밋 ID의 클린 리버스 커밋을 만듭니다.
이렇게 하면 역사가 다시 쓰이지 않고 오히려 역전이 있었다는 것을 모두가 알 수 있다.
원하는 방식으로 파일을 추가/제거:
git rm classdir
git add sourcedir
다음으로 커밋을 수정합니다.
git commit --amend
이전의 잘못된 커밋은 새로운 인덱스 상태를 반영하도록 편집됩니다.즉, 처음부터 실수하지 않은 것과 같습니다.
아직 누르지 않은 경우에만 이 작업을 수행해야 합니다.눌렀다면 정상적으로 수정하면 됩니다.
언급URL : https://stackoverflow.com/questions/448919/how-can-i-remove-a-commit-on-github
'programing' 카테고리의 다른 글
| PuTTY 세션목록을 내보내기 또는 Import하려면 어떻게 해야 합니까? (0) | 2023.04.09 |
|---|---|
| git diff 파일을 어떻게 가져와 같은 저장소의 복사본인 로컬 브랜치에 적용합니까? (0) | 2023.04.09 |
| Windows 탐색기 "명령 프롬프트 여기" (0) | 2023.04.09 |
| 목표 C 클래스 -> 문자열: [NSArray className] -> @"NSArray" (0) | 2023.04.09 |
| 본문을 브라우저 높이의 100%로 만듭니다. (0) | 2023.04.09 |