git로 실수를 취소하는 5 가지 방법
명령은 특정 파일을 특정 버전으로 복원하는 데 사용될 수 있습니다. 사용자는 손상된 파일의 "오류 커밋"을 식별 한 다음 명령을 사용하여 잘못된 커밋 전에 파일을 버전으로 복원 할 수 있습니다.
-
git의
- 도구를 사용하여 손실 된 버전 또는 삭제 된 분기를 복원 할 수 있습니다.
는 로컬 저장소에서 모든 헤드 포인터의 움직임을 기록하여 사용자가 이전 상태로 돌아와 손실 된 데이터를 복원 할 수 있습니다. git restore
사용자는 명령을 사용하여 커밋을 다른 지점으로 이동할 수 있습니다. 커밋이 잘못된 지점에 있으면 사용자는 올바른 지점을 확인하고 커밋을 이동 한 다음 -p
를 사용하여 원래 지점에서 원치 않는 커밋을 삭제할 수 있습니다. -
일부 지역 변경 사항을 버립니다 git log
인코딩 프로세스는 일반적으로 혼란 스럽습니다. 때때로 그것은 앞으로 두 단계와 한 걸음 물러나는 것처럼 느껴집니다. 다시 말해 : 당신이 쓴 코드 중 일부는 훌륭하지만 일부는 그렇지 않습니다. 이곳은 Git이 당신을 도울 수있는 곳입니다. 좋은 부품을 유지하고 더 이상 필요없는 변화를 버릴 수 있습니다. git checkout
일부 "로컬"변경 사항 (즉, 아직 제출되지 않은 변경 사항)이 포함 된 샘플 시나리오를 살펴 보겠습니다. -
Reflog
참고 : 더 나은 개요와 명확한 시각화를 위해 일부 스크린 샷에서 Tower Git 데스크탑 클라이언트를 사용했습니다. 이 튜토리얼을 배우기 위해 타워가 필요하지 않습니다.Reflog
먼저 에서 문제를 해결합시다. 우리가 만든 변화는 완전히 잘못된 방향으로 진행되었습니다. 모든 변경 사항을 취소하고 파일의 마지막 커밋 상태를 재현합시다.
-
또는
git cherry-pick
명령을 사용하여 동일한 결과를 달성 할 수 있습니다. 그러나는 다양한 용도와 의미를 가지고 있기 때문에 약간 업데이트 된 명령을 사용하는 것을 선호합니다 (이러한 유형의 작업에만 초점을 맞 춥니 다). git reset
의 두 번째 질문은 약간 까다 롭습니다. 이 파일에서 우리가 만든 변경 중 일부는 실제로 양호하며 일부만 문서화되지 않아야합니다. -
고객/팀 리더/프로젝트 관리자가 우리가 개발 한 아름다운 분석이 더 이상 필요하지 않다고 가정 해 봅시다. 우리는 잘 정리되어 있으며 물론 해당 git reflog
브랜치를 삭제할 것입니다!
위의 - 는 현재 헤드 브랜치임을 알 수 있습니다. 삭제하려면 먼저 다른 지점으로 전환해야합니다.
$ git restore css/general.css
로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사git은 우리가 매우 진지한 일을하려고한다고 말합니다.에는 다른 곳에 존재하지 않는 고유 한 커밋이 포함되어 있기 때문에 삭제하면 일부 (아마도 가치있는) 데이터를 파괴 할 것입니다. OK ...이 기능이 더 이상 필요하지 않으므로 계속할 수 있습니다 :
feature/analytics
당신은 다음에 일어날 일을 기대했을 것입니다 : 우리의 고객/팀 리더/프로젝트 관리자는이 기능이 다시 돌아 왔다고 우리에게 행복하게 알려줍니다! 그들은 계속되고 싶어합니다! ? <🎜 🎜> 마찬가지로, 우리는 귀중한 데이터를 잃어버린 나쁜 상황에 직면하고 있습니다! 그러니 리플 로그가 우리를 다시 구할 수 있는지 보자 : <🎜 🎜> $ git restore -p index.html
로그인 후 복사<<>
자세히 보면 좋은 소식이 분명 할 것입니다. 우리가 (비참하게) 지점을 삭제하기 전에 다른 지점으로 전환하려면 를 수행해야합니다 (GIT로 현재 지점을 삭제할 수 없기 때문입니다). 물론이 결제는 리플 로그에도 기록됩니다. 우리가 삭제 한 지점을 복원하기 위해, 이제
의 상태를 새 지점의 시작점으로 간단히 사용할 수 있습니다.$ git log -- index.html
로그인 후 복사봐 : 우리 지점이 다시 살아 났어요! ???? <.> 타워와 같은 데스크탑 GUI를 사용하는 경우, 그러한 오류를 취소하는 것은 일반적으로 <🎜 🎜> cmd <🎜 <🎜 z <🎜
를 누르는 것만 큼 쉽습니다.
<<>
git checkout
이동은 다른 분기로 커밋됩니다 <'s> 마지막으로, "아, 아니오!" 오늘날 많은 팀이 "메인", "마스터"또는 "개발"과 같은 장기 지점에 직접 제출하는 것을 금지하는 규칙을 공식화했습니다. 일반적으로 새로운 커밋은 병합/리바세를 통해서만 이러한 지점에 도달해야합니다. 그러나 우리는 때때로 직접 잊고 제출합니다 ... <🎜 다음 시나리오를 예로 들어 봅시다. <<>$ git log -p -- index.html
로그인 후 복사우리는 <🎜 🎜>에 제출해야했지만 실수로 <,> 우선, 우리는 이번에 우리가 오른쪽 지점에 있는지 확인해야합니다. 그래서 우리는 : 를 확인하고 있습니다.
<<> 우리는이제 명령을 사용하여 커밋을 안전하게 이동할 수 있습니다.를 확인할 수 있으며 커밋이 현재 여기에 있음을 알게 될 것입니다.
<<>지금까지 모든 것이 잘되었습니다. 그러나 는
cherry-pick
지점에서 커밋을 삭제하지 않습니다 (master
forever 는 거기에 있지 않아야합니다). 그래서 우리는 거기에서 엉망진창을 정리해야합니다 :우리는 로 다시 전환하고$ git restore css/general.css
로그인 후 복사로그인 후 복사로그인 후 복사로그인 후 복사를 사용하여 역사에서 원치 않는 커밋을 삭제합니다.
나는 당신에게 원활한 개발, 시도 할 용기를 기원하며, 물론 수리에 능숙해야합니다!master
끝, 모든 것이 정상으로 돌아 왔으므로 이제 행복한 춤을 시작할 수 있습니다! ???? <.> 잠금 해제 오류는 초강대국입니다 나는 전에 그것을 말했지만 불행히도 우리 모두는 그것이 사실이라는 것을 알고 있습니다. 우리는 오류를 피할 수 없습니다! 우리가 프로그래머라도 아무리 좋은 것이더라도, 우리는 때때로 그것을 엉망으로 만들 것입니다. 따라서 문제는 우리가 실수를하는지 여부가 아니라 어떻게 효과적으로 처리하고 문제를 해결합니까? git reset
git undo 도구에 대해 자세히 알고 싶다면 "Git Firm Aid 키트"를 적극 권장합니다. 이것은 (무료) 짧은 비디오 컬렉션으로 GIT에서 오류를 정리하고 실행 취소하는 방법을 보여줍니다. git을 사용하여 오류를 취소하지 않는 오류 (FAQ) 와
의 차이점은 무엇입니까?및 는 GIT 저장소의 변경 사항을 취소하는 데 도움이되는 두 가지 명령이지만 다르게 작동합니다.
를 사용한 경우머리 포인터를 특정 커밋으로 이동하십시오. 이것은 실제로 커밋에 재설정 후 당신이 가진 모든 커밋을 실제로 "잊어 버린"것을 의미합니다. 이것은 파괴적인 작업이며주의해서 사용해야합니다. 반면에 는 특정 커밋의 변경 사항을 취소하겠다는 새로운 커밋을 만듭니다. 이것은 기존의 역사를 바꾸지 않기 때문에 안전한 운영입니다. 작업을 취소하는 방법은 무엇입니까? 변경 사항을 저장하고이를 취소하기 위해 이미 명령을 사용할 수 있습니다. 예를 들어, 특정 파일을 풀려면 를 사용할 수 있습니다. 모든 변경 사항을 제거하려면 파일을 지정하지 않고
를 사용할 수 있습니다.
를 취소 할 수 있습니까 ?
예, 또는 명령을 사용하여 취소 할 수 있습니다. 머리 포인터를 실행 취소하고자하는 커밋으로 다시 움직여서 원치 않는 커밋을 효과적으로 지우십시오. 반면에 는 원치 않는 커밋의 변경 사항을 취소하겠다는 새로운 커밋을 만들 것입니다. 특정 파일의 변경 사항을 취소하는 방법은 무엇입니까? git reset
특정 파일을 변경하고 이러한 변경 사항을 취소하려면 명령을 사용할 수 있습니다. 예를 들어, git revert
는 지정된 파일의 로컬 작업 디렉토리의 변경 사항을 폐기합니다.는 즉시 제출하고 싶지 않은 변경 사항을 일시적으로 저장할 수있는 명령입니다. 다른 지점으로 전환해야하지만 현재 변경 사항을 커밋하고 싶지 않은 경우 유용합니다. 나중에
git stash
를 사용하여 임시 변경 사항을 적용 할 수 있습니다.내 git 역사를 보는 방법은 무엇입니까? 당신은 git stash
명령을 사용하여 git history를 볼 수 있습니다. 이것은 저장소의 모든 커밋 목록과 커밋 메시지를 보여줍니다.git stash apply
를 취소 할 수 있습니까 예, 당신은 또는 옵션과 함께
여러 커밋을 취소하려면 명령과 구문을 사용할 수 있습니다. 예를 들어, 는 3 번의 커밋 전에 헤드 포인터를 뒤로 움직입니다.
git push
소프트 리셋과 하드 리셋의 차이점은 무엇입니까? 소프트 리셋은 헤드 포인터를 특정 커밋으로 이동하지만 작업 디렉토리 및 스테이징 영역을 변경하지는 않습니다. 즉, "잊혀진"커밋의 변경 사항이 커밋되지 않은 변경으로 여전히 변경됩니다. 반면에 하드 리셋은 작업 디렉토리 및 스테이징 영역의 모든 변경 사항을 폐기하여 지정된 커밋 시점에 저장소를 주로 효과적으로 복원합니다. 하드 리셋 후 커밋을 재개 할 수 있습니까? git push
예, 하드 리셋 후 커밋을 재개 할 수 있지만 쉽지는 않습니다. Git은 리플 로그에서 모든 Ref 업데이트 (예 : 움직이는 헤드 포인터)에 대한 로그를 유지합니다. 명령을 사용하여 복구하려는 커밋을 찾은 다음 -f
를 사용하여 해당 커밋에서 새 지점을 만들 수 있습니다.--force
의 모든 변경에 대해 묻습니다. 로 재설정합니다
<<> 내용을 보려면 <🎜 🎜>를 보려면 <🎜 🎜> 플래그를 사용 하여이 커밋의 실제 변경 사항을 표시 할 수 있습니다.
가 잘못 커밋의 해시 값에 참석하면 git에게 다음을 수행하도록 지시합니다.
물론, 그러한 로그는 일이 잘되지 않는 상황에 적합합니다. 먼저 작은 재난을 만들어 봅시다. 그러면 우리는 리플 로그로 고칠 수 있습니다.
<<>
를 사용하거나 단순히 새 지점을 만들 수 있습니다.
동일, 명령은 문제를 해결합니다. 그러나 이번에는 "패치"레벨에 깊이 들어가기 때문에
git restore
-p
$ git restore css/general.css
버전을 복원하여이를 수행합니다! 이것은 중요합니다. 잘못된 커밋에서 파일을 재개하는 대신 커밋 전에 마지막 좋은 상태를 복원합니다!
index.html
가 수정되었음을 알게 될 것입니다 : Git은 우리를 위해 마지막으로 좋은 버전의 파일을 복원했습니다! git reset
<<>
<,> 우선, 리플 로그는 열기가 매우 쉽습니다.
$ git restore css/general.css
위 내용은 git로 실수를 취소하는 5 가지 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

CNCF (Cloud Native Computing Foundation), Ampere Computing, Equinix Metal 및 Actuated 간의 공동 작업 인이 파일럿 프로그램은 CNCF Github 프로젝트를위한 ARM64 CI/CD를 간소화합니다. 이 이니셔티브는 보안 문제 및 성과를 다룹니다

이 튜토리얼은 AWS 서비스를 사용하여 서버리스 이미지 처리 파이프 라인을 구축함으로써 안내합니다. ECS Fargate 클러스터에 배포 된 Next.js Frontend를 만들어 API 게이트웨이, Lambda 기능, S3 버킷 및 DynamoDB와 상호 작용합니다. th

이 최고의 개발자 뉴스 레터와 함께 최신 기술 트렌드에 대해 정보를 얻으십시오! 이 선별 된 목록은 AI 애호가부터 노련한 백엔드 및 프론트 엔드 개발자에 이르기까지 모든 사람에게 무언가를 제공합니다. 즐겨 찾기를 선택하고 Rel을 검색하는 데 시간을 절약하십시오
