실수를 되돌리기 위한 Git 기술
참고: 이러한 팁의 대부분은 변경 사항을 원격 저장소로 푸시하기 전에만 적용됩니다. 원격 리포지토리의 기록을 다시 작성하는 것은 무섭고 수행 중인 작업을 알지 못하는 한 피해야 합니다! 원격을 로컬 상태로 정말로 바꾸려면
--force
플래그로 푸시하십시오.1. 언스테이지
파일 자체를 수정하지 않고 스테이징 영역에서 무언가를 제거하고 싶다고 가정해 보십시오.
git diff --name-only --cached
git reset HEAD <file>
git reset HEAD
2. 커밋 해제
git reset HEAD^
git reset --soft HEAD^
git reset --hard HEAD^
3. 커밋 되돌리기
기록의 일부 커밋이 문제가 되었기 때문에 변경 사항을 취소하려면 새로운 "커밋 되돌리기"를 생성하십시오.
ref
찾기: git log
git revert <ref>
원래 커밋을 그대로 유지하고 원격 저장소로 푸시된 커밋에 안전하게 사용할 수 있습니다.
4. 커밋 수정
git commit --amend -m "New message"
git commit --amend --no-edit
5. 버리기
파일을 수정했고 모든 것을 버리고 이전 커밋으로 돌아가고 싶습니다.
옵션 A - 변경 사항 숨기기(권장)
git stash push
git stash --all
git stash pop
옵션 B - 하드 리셋(권장하지 않음)
git reset --hard <commit>
-x
): git clean -fd
git reflog show HEAD
를 사용하고 ref
로 다시 재설정하십시오. 하지만 stash
작업이 더 쉽습니다. 6. 리베이스
git의 스위스 아미 나이프. 기본적으로 2-4단계를 모두 한 번에 수행할 수 있습니다. 커밋을 편집, 이동 및 병합하여 기록을 다시 작성합니다. 다시 말하지만 아직 원격 저장소로 푸시되지 않은 커밋에만 사용하세요. 그렇지 않으면 화난 동료가 생길 수 있습니다.
git rebase -i
x
커밋을 리베이스: git rebase -i HEAD~<x>
대화식 리베이스 참조:
Commands:
p, pick = use commit
r, reword = use commit, but edit the commit message
e, edit = use commit, but stop for amending
s, squash = use commit, but meld into previous commit
f, fixup = like "squash", but discard this commit's log message
x, exec = run command (the rest of the line) using shell
d, drop = remove commit
이것은 매우 강력한 도구입니다. 몇 가지를 권장합니다further reading.
보너스 - .gitignore
.gitignore
를 만들어 스테이징 영역에 추가하지 않으려는 특정 파일(중요하게는 환경 변수 및 API 키)을 지정합니다. 다양한 프로젝트에 대한 템플릿 목록this을 참조하십시오.다음에 무엇을할지
.gitconfig
를 참조하십시오. diff-so-fancy
을 사용하는 것을 좋아합니다. 전체 목록은 내 . 추가적인 팁은 댓글로 남겨주세요!
Reference
이 문제에 관하여(실수를 되돌리기 위한 Git 기술), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/timwjames/git-techniques-to-undo-your-mistakes-1jl2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)