logo

English

이곳의 프로그래밍관련 정보와 소스는 마음대로 활용하셔도 좋습니다. 다만 쓰시기 전에 통보 정도는 해주시는 것이 예의 일것 같습니다. 질문이나 오류 수정은 siseong@gmail.com 으로 주세요. 감사합니다.

Git Commit 취소 관련 명령어 정리

by digipine posted Nov 02, 2017
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print

개별파일 원복

git checkout  -- <파일> : 워킹트리의 수정된 파일을 index에 있는 것으로 원복
git checkout HEAD -- <파일명> : 워킹트리의 수정된 파일을 HEAD에 있는 것으로 원복(이 경우 --는 생략가능)
git checkout FETCH_HEAD -- <파일명> : 워킹트리의 수정된 파일의 내용을 FETCH_HEAD에 있는 것으로 원복? merge?(이 경우 --는 생략가능)
 
index 추가 취소
git reset -- <파일명> : 해당 파일을 index에 추가한 것을 취소(unstage). 워킹트리의 변경내용은 보존됨. (--mixed 가 default)
git reset HEAD <파일명> : 위와 동일
 
commit 취소
git reset HEAD^ : 최종 커밋을 취소. 워킹트리는 보존됨. (커밋은 했으나 push하지 않은 경우 유용)
git reset HEAD~2 : 마지막 2개의 커밋을 취소. 워킹트리는 보존됨.
git reset --hard HEAD~2 : 마지막 2개의 커밋을 취소. index 및 워킹트리 모두 원복됨.
git reset --hard ORIG_HEAD : 머지한 것을 이미 커밋했을 때,  그 커밋을 취소. (잘못된 머지를 이미 커밋한 경우 유용)
git revert HEAD : HEAD에서 변경한 내역을 취소하는 새로운 커밋 발행(undo commit). (커밋을 이미 push 해버린 경우 유용)
Push 가 된 상태라면 reset 후 원복된 내용을 Commit 다시하고 Push  하면된다.
 
워킹트리 전체 원복
git reset --hard HEAD : 워킹트리 전체를 마지막 커밋 상태로 되돌림. 마지막 커밋이후의 워킹트리와 index의 수정사항 모두 사라짐. 
                                  (변경을 커밋하지 않았다면 유용)
git checkout HEAD . : ??? 워킹트리의 모든 수정된 파일의 내용을 HEAD로 원복.
git checkout -f : 변경된 파일들을 HEAD로 모두 원복(아직 커밋하지 않은 워킹트리와 index 의 수정사항 모두 사라짐. 신규추가 파일 제외)
 
 
* 참조 : reset 옵션
--soft : index 보존, 워킹트리 보존. 즉 모두 보존.
--mixed : index 취소, 워킹트리만 보존 (기본 옵션)
--hard : index 취소, 워킹트리 취소. 즉 모두 취소.
 
* untracked 파일 제거
git clean -f
git clean -f -d : 디렉토리까지 제거
 
TAG •
  • ?
    digipine 2017.11.02 21:31

    필요한 작업은 두가지. 하나는 reset 하는 다시 push. 덤으로 remote에 있는 저장소와 pull을 해서 다시 한번 동기화 맞춰주기.

    세번째 작업은 부가적인거니까 일단 앞에 두개만 해보자.

    git reset HEAD^

    이 명령을 사용하면 커밋 하나를 되돌릴 수 있다. 두개를 되돌리려면

    git reset HEAD~2

    이렇게 되돌린 다음엔 다시 커밋을 하고..

    git commit -m ‘머라머라’

    이제 Push를 해야되는데.. Github같은 곳에 있는 저장소로 올리려고 push하면 다음과 같은 메시지가 떨어진다.

    $ git push origin master
    To git@github.com:keesun/telepathy.git
    ! [rejected] master -> master (non-fast-forward)
    error: failed to push some refs to ‘git@github.com:keesun/telepathy.git’
    To prevent you from losing history, non-fast-forward updates were rejected
    Merge the remote changes (e.g. ‘git pull’) before pushing again. See the
    ‘Note about fast-forwards’ section of ‘git push –help’ for details.

    원격 저장소에 있는 정보가 손실 될 수 있는 작업이라서 리젝트 시킨다. 오호.. 상당히 똑똑하다. 그런데 어쩌겠는가.. 내가 원하는 작업이 바로.. 그 작업이라네.. 없애주길 바래.

    이럴때 사용할 수 있는게 +다.

    git push origin +master

    이렇게 +를 붙여주면 경고는 무시하고 데이터가 손실되도 push한다.


List of Articles
No. Subject Author Date Views
104 TCP/IP State Transition - TCP 스택 포팅 시 참조 file digipine 2017.11.02 194822
103 언어 IDE 별로 git ignore 파일을 자동으로 만들어 주는 사이트 엉뚱도마뱀 2018.12.17 122385
102 What is Android Repo? and Manual, Download file digipine 2017.11.02 99550
101 [Linux] ubuntu 16.04에 QT Creator 설치하기 digipine 2017.11.02 24328
100 [Swift, MacOS] 맥 한글 파일명이 윈도우에서 자소 분리되는 현상 해결, NFD, NFC 엉뚱도마뱀 2018.12.11 20071
99 Linux init.d 에서 등록하기. 부팅 시 자동실행 설정 digipine 2017.11.03 12565
98 FFT (Fast Fourier Transform) 고속 푸리에 변환 예제 소스 digipine 2017.10.29 12544
97 Photoshop CC 2018 한글 영문 변환 언어팩, 포토샵 언어변경 file 엉뚱도마뱀 2018.07.04 8525
96 Phabricator 설치 가이드 우분투 16.04 기준 digipine 2017.11.02 6193
95 ATmega8 MCU 간의 TWI 기능을 이용한 I2C 통신 digipine 2017.11.02 5986
94 WinPCap과 Ethereal, Wireshark 을 이용한 스니핑(Sniffing) digipine 2017.10.29 5428
93 공짜 무료 C/C++ 컴파일러들 file digipine 2017.10.28 4376
92 난수발생기 개론 엉뚱도마뱀 2017.11.22 4311
91 비밀번호 해쉬에 Salt(소금) 첨가하기 file 엉뚱도마뱀 2017.11.23 4272
90 [iOS] Bluetooth로 App을 백그라운드 모드로 실행는 방법 lizard2019 2020.02.11 3514
89 OpenAL 사용법 정리 1 digipine 2017.11.01 3397
88 [Linux, OSX] pfctl - Packet FIlter Control 사용법 digipine 2017.11.02 3179
87 Xcode 없이 맥에 '명령어 라인 도구(Command Line Tools)'를 설치하는 방법 엉뚱도마뱀 2018.12.26 2859
86 WIN CE, GPS - NMEA protocol - GPS Virtual Driver digipine 2017.10.28 2829
85 초고속망 통신사 DNS 서버 주소 모음 - DNS 설정 digipine 2017.11.03 2630
Board Pagination Prev 1 2 3 4 5 6 Next
/ 6