[5분 따라하기]
git으로 undo하기(remote편)
박재호(jrogue@gmail.com)
참고 자료
• <컴퓨터 vs 책> 블로그
• http://jhrogue.blogspot.com/
• OKdevTV 유튜브 방송
• 오늘자 방송:
https://www.youtube.com/watch?v=C6AgAOcH9LE&list=PLdntWJk2tJPL
KNNYBVCxnde2PEB6dzbSL&index=9
• 5분 따라하기 리스트:
• https://www.youtube.com/playlist?list=PLdntWJk2tJPLKNNYBVCxnde2PEB6dzbSL
• 슬라이드 셰어
• https://www.slideshare.net/jrogue/presentations
• ASCIINEMA
• https://asciinema.org/~jrogue
오늘 소개할 내용
• git을 사용하다 보면 실수할 때가 있기 마련이다.
• 시나리오 1: git add를 했는데, 불필요한 파일이 포함되었어요. add를 취소
할 수 없을까요? (지난 시간)
• 시나리오 2: git commit을 했는데, 불필요한 파일이 포함되었어요. 커밋을
취소할 수 없을까요?(지난 시간)
• 시나리오 3: git push를 했는데, 불필요한 파일이 포함되었어요. 푸쉬를 취
소할 수 없을까요?(이번 시간)
몇 가지 힌트
• git에서 HEAD 관리
• HEAD가 가리키는 커밋이 바뀔 때마다 git은 자동으로 해당 커밋이 무엇인
지 기록
• 새로 커밋하거나 브랜치를 바꿀 때 이런 기록을 reflog에 남기게 됨
• 응용: 마스터 브랜치를 강제로 hard reset한 경우 어떻게 할까? → 답:
reflog에서 해당하는 HEAD의 번호(HEAD@{번호})를 찾아 브랜치를 만들
어 복구함
• git에서 원격 저장소에 push
• 지역 브랜치를 원격 서버로 전송
• 강제로 덮어쓰려면? git push origin할 때 브랜치 이름 앞에 +기호를 붙임
스크립트
$ git clone <여러분의_깃허브_프로젝트>
$ cd sample
$ ls
$ touch secret.key
$ git add .
$ git status
$ git commit -m "add secret.key!"
$ git push
$ git status
$ git reset HEAD^
$ git reflog
$ git reset HEAD@{reflog 결과에서 확인한 번호}
$ git reflog
$ git commit -m “fix wrong push”
$ git log
$ git push
$ git push origin +master
명령행에서 직접 실행
보면서 따라해봅시다~~~
• https://asciinema.org/a/329715

[5분 따라하기] git으로 undo하기(remote편)

  • 1.
  • 2.
    참고 자료 • <컴퓨터vs 책> 블로그 • http://jhrogue.blogspot.com/ • OKdevTV 유튜브 방송 • 오늘자 방송: https://www.youtube.com/watch?v=C6AgAOcH9LE&list=PLdntWJk2tJPL KNNYBVCxnde2PEB6dzbSL&index=9 • 5분 따라하기 리스트: • https://www.youtube.com/playlist?list=PLdntWJk2tJPLKNNYBVCxnde2PEB6dzbSL • 슬라이드 셰어 • https://www.slideshare.net/jrogue/presentations • ASCIINEMA • https://asciinema.org/~jrogue
  • 3.
    오늘 소개할 내용 •git을 사용하다 보면 실수할 때가 있기 마련이다. • 시나리오 1: git add를 했는데, 불필요한 파일이 포함되었어요. add를 취소 할 수 없을까요? (지난 시간) • 시나리오 2: git commit을 했는데, 불필요한 파일이 포함되었어요. 커밋을 취소할 수 없을까요?(지난 시간) • 시나리오 3: git push를 했는데, 불필요한 파일이 포함되었어요. 푸쉬를 취 소할 수 없을까요?(이번 시간)
  • 4.
    몇 가지 힌트 •git에서 HEAD 관리 • HEAD가 가리키는 커밋이 바뀔 때마다 git은 자동으로 해당 커밋이 무엇인 지 기록 • 새로 커밋하거나 브랜치를 바꿀 때 이런 기록을 reflog에 남기게 됨 • 응용: 마스터 브랜치를 강제로 hard reset한 경우 어떻게 할까? → 답: reflog에서 해당하는 HEAD의 번호(HEAD@{번호})를 찾아 브랜치를 만들 어 복구함 • git에서 원격 저장소에 push • 지역 브랜치를 원격 서버로 전송 • 강제로 덮어쓰려면? git push origin할 때 브랜치 이름 앞에 +기호를 붙임
  • 5.
    스크립트 $ git clone<여러분의_깃허브_프로젝트> $ cd sample $ ls $ touch secret.key $ git add . $ git status $ git commit -m "add secret.key!" $ git push $ git status $ git reset HEAD^ $ git reflog $ git reset HEAD@{reflog 결과에서 확인한 번호} $ git reflog $ git commit -m “fix wrong push” $ git log $ git push $ git push origin +master 명령행에서 직접 실행
  • 6.