전체적인 흐름 ( + commit, push 취소하기 )

uoayop·2021년 3월 21일
0

Git

목록 보기
3/6
post-thumbnail

SNS를 보다가 누군가 공유해주신 흐름도가 유용해보여서 가져왔다.
특히 올해 초에 feature 브랜치가 아닌 develop 브랜치에 commit과 push를 실수로 한 적이 있었는데..
진짜.. 식은 땀을 줄줄 흘리며 서치 했던 기억이 난다.

잊지말고 기록 해놔야겠다.


directory

working directory
---(add)---> stage area
---(commit)---> local repository
---(push)---> remote repository

  • working directory : 내가 현재 작업하고 있는 공간
  • stage area : commit을 할 파일을 스테이징 하는 공간
  • local repository : commit된 파일이 원격 저장소로 push를 하기 전에 존재하는 공간
  • remote repository : 원격 저장소로, git repository를 의미

fetch, merge, pull

  • fetch : 원격 저장소에서 로컬 저장소로 파일을 가지고 온다.
  • merge : 로컬 저장소에 있는 파일을 작업 공간으로 가지고 온다.
  • pull : fetch + merge

add 취소하기

스테이징 된 파일들을 unstage로 변경하자

git reset HEAD 
//add한 파일 전체 취소

git reset HEAD [file]
//특정 파일을 unstage로 변경

commit 취소하기

git log
//commit  목록 확인

//[방법 1] : commit 취소, 해당 파일은 stage 상태로 작업 디렉터리에 보존
git reset --soft HEAD^

//[방법 2] : commit 취소, 해당 파일은 unstage 상태로 작업 디렉터리에 보존
git reset --mixed HEAD^
또는
git reset HEAD^
또는
git reset HEAD~2
// 마지막 2개의 commit 취소

//[방법 3] : commit 취소, 해당 파일은 unstage 상태로 작업 디렉터리에서 삭제 - 모두 날아가니 주의하자
git reset --hard HEAD^

commit 메세지 변경하기

git commit --amend

push 취소하기

  • 자신의 local 내용을 remote에 강제로 덮어쓰기 하는 것이므로 주의하자!!
  • 되돌린 commit 이후의 commit이 모두 날아가므로 주의하자
  1. 작업 디렉터리에서 commit을 되돌린다.
git reset HEAD^
  1. 원하는 시점으로 작업 디렉터리를 되돌린다.
git log -g
또는
git reflog
//목록을 보고 commit id를 확인하자

git reset HEAD@{number}
또는
git reset [commit id]
  1. 되돌려진 상태에서 다시 commit을 한다.
git commit -m "cancel push"
  1. 원격 저장소에 강제로 push 한다.
git push origin [branch name] -f
또는
git push origin +[branch name]

[참고]

[Git] git add 취소하기, git commit 취소하기, git push 취소하기

profile
slow and steady wins the race 🐢

0개의 댓글