git commit, push 취소하기
git commit 취소하기
1. git log 로 commit 목록 확인 (git log --oneline 으로 간략하게 로그 확인 가능)
2. 취소하고 싶은 개수 확인 후 아래 명령어 실행
// [방법 1] commit을 취소하고 해당 파일들은 staged 상태 (add 된 상태)로 워킹 디렉터리에 보존
$ git reset --soft HEAD^
// [방법 2] commit을 취소하고 해당 파일들은 unstaged 상태 (add 하기 전 상태) 로 워킹 디렉터리에 보존
$ git reset --mixed HEAD^ // 기본 옵션 (--mixed 는 아래처럼 생략 가능)
$ git reset HEAD^ // 위와 동일
$ git reset HEAD~2 // 마지막 2개의 commit을 취소. (HEAD~ 뒤에 숫자 붙이면 됨)
// [방법 3] commit을 취소하고 해당 파일들은 unstaged 상태로 워킹 디렉터리에서 삭제
$ git reset --hard HEAD^
git reset 옵션
1) --soft
* 보존(add한 상태, staged 상태)
* 워킹 디렉터리의 파일 보존.
* git add 된 상태로 만들어 줌.
2) --mixed
* 보존 및 취소(add 하기 전 상태, unstaged 상태)
* 워킹 디렉터리의 파일 보존 (기본 옵션)
* git add 하기 전 상태로 만들어 줌.
3) --hard
* 취소(add 하기 전 상태, unstaged 상태)
* 워킹 디렉터리의 파일 삭제. 즉 모두 취소.
* 아예 로컬에서 파일을 삭제하는 것이 아니라 add 하지도 않는 untracked 상태로 만든다는 의미.
-> nothing to commit, working tree clean 으로 만들어줌.
commit 메세지 변경하기
git commit 해서 메세지를 적은 후 엔터를 눌렀는데, 만약 메세지를 다시 변경하고 싶다면?
$ git commit --amend
git push 취소하기
이 명령을 사용하면 자신의 local의 내용을 remote에 강제로 덮어쓰기를 하는 것이기 때문에 주의해야 한다. 되돌아간 commit 이후의 모든 commit 정보가 사라져버린다. 특히 협업 프로젝트에서는 동기화 문제가 발생할 수 있으므로 팀원과 상의 후 진행해야 한다.
1. 워킹 디렉토리에서 commit 을 되돌린다. (가장 최근의 commit 을 취소하고 워킹 디렉토리를 되돌린다.
// 가장 최근의 commit을 취소 (기본 옵션: --mixed 는 생략 가능)
// 아래 두 명령어는 동일한 동작을 수행함
$ git reset HEAD^
$ git --mixed reset HEAD^
2. 원하는 시점으로 워킹 디렉토리를 되돌린다. (number 혹은 commit id 는 git log -g 에서 확인할 수 있다.)
// Reflog(브랜치와 HEAD가 지난 몇 달 동안에 가리켰던 커밋) 목록 확인
$ git reflog 또는 $ git log -g
// 원하는 시점으로 워킹 디렉터리를 되돌린다.
//number 혹은 commit id 는 git log -g 에서 확인할 수 있다.
$ git reset HEAD@{number} 또는 $ git reset [commit id]
3. 되돌린 상태에서 다시 commit 한다.
$ git commit 후 메세지 수정
혹은 간략하게
$ git commit -m "새로운 커밋 메세지"
4. 원격 저장소에 강제로 push 한다.
$ git push origin 브랜치명 -f
또는
$ git push origin +브랜치명
참고 :
Git - Reset 명확히 알고 가기
지금까지 reset 명령을 실행하는 기본 형태와 사용 방법을 살펴봤다. reset 명령을 실행할 때 경로를 지정하면 1단계를 건너뛰고 정해진 경로의 파일에만 나머지 reset 단계를 적용한다. 이는 당연한
git-scm.com
Git - 되돌리기
이렇게 --amend 옵션으로 커밋을 고치는 작업은, 추가로 작업한 일이 작다고 하더라도 이전의 커밋을 완전히 새로 고쳐서 새 커밋으로 변경하는 것을 의미한다. 이전의 커밋은 일어나지 않은 일이
git-scm.com
GIT에 대한 내용정리
http://progit.org/book/ (Pro Git) http://dogfeet.github.com/articles/2012/progit.html ( Pro Git 번역) 개념 정리 1. Git의 데이터는 파일 시스템의 Snapshot이라 할 수 있으며, 크기가 아주 작다. Git은 Commit 하거나 프로젝트
dimdim.tistory.com