본문 바로가기
Study/etc.

[Git] 깃의 기본에 대해 공부해보자. part2 (revert reset restore push clone pull pull-request stash)

by 박히밍 2023. 2. 12.
반응형

[Git] 깃의 기본에 대해 공부해보자. part2 (revert reset restore push clone pull pull-request stash)

[Git] 깃의 기본에 대해 공부해보자. part2  (revert reset restore push clone pull pull-request stash)

오늘은 깃을 사용하다가 실수했을 때 복구하는 방법 (revert reset restore)

로컬저장소의 코드를 원격저장소로 올리는 방법 (push)

원격저장소를 로컬저장소로 가져오는 방법 (clone / pull)

브랜치를 병합하는 방법 (pull request)

커밋 할 때 함께 올리기 싫은 코드들을 잠깐 보관하는 방법 (stash)에 대해 정리해보려 합니다

 

 

후후후 드디어 나도 깃의 기본개념은 이해하고 있는 새럼,,🙋‍♀️

 

 

깃허브 기본 파트는 바로 아래 요기로~~!

https://heeeming.tistory.com/entry/Git-%EA%B9%83%EC%9D%98-%EA%B8%B0%EB%B3%B8%EC%97%90-%EB%8C%80%ED%95%B4-%EA%B3%B5%EB%B6%80%ED%95%B4%EB%B3%B4%EC%9E%90-%EA%B9%83-%EA%B8%B0%EB%B3%B8-%EB%AA%85%EB%A0%B9%EC%96%B4-branch-merge-delete

 

[Git] 깃의 기본에 대해 공부해보자. (깃 기본 명령어 branch merge delete)

[Git] 깃의 기본에 대해 공부해보자. (깃 기본 명령어 branch merge delete) 두려워서 피하기만 했던 깃 공부를 해보려 합니다. 🧐 깃 기본 명령어 정리(git basic) git init git 저장소 초기화 방법 git add index.

heeeming.tistory.com

 

 

 

 

 


 

 

 

 

🧐 실수를 되돌리자. (git revert reset restore)

  • git restore fileName.확장자
    • 최근 commit 된 상태로 현재 파일의 수정내역을 되돌릴 수 있다.

 

  • git restore --source 커밋아이디 fileName.확장자
    • 입력한 파일이 특정 커밋아이디 시점으로 복구된다.

 

git restore --staged fileName.확장자
복구와는 상관 없지만 특정 파일을 잘못해서 git add 했을 경우 staging 영역에서 취소할 수 있다.

 

 

 

  • git revert 커밋아이디
    • 커밋 단위로 취소하고 싶을 때 사용. 커밋아이디는 여러개 나열하여 작성 가능
    • git revert 커밋아이디 입력 후 엔터를 치면 Vim 창이 뜨는데, revert 메시지 입력 후 ESC 누른 뒤 :wq 입력한 뒤에 Vim 화면을 빠져 나오면 된다.
    • merge 명령으로 인해 새로 만들어진 commit도 revert 가능하다.

 

 

  • git revert HEAD
    • 최근 커밋 취소

 

 

  • git reset --hard 커밋아이디
    • git reset 명령어 사용하면 특정 commit 시절로 아예 모든걸 되돌릴 수 있다.
    • reset --hard 해버리면 특정 커밋아이디 시점 이후의 모든 로그와 파일을 삭제해버린다.
    • 보통 협업시에는 위험하기 때문에 잘 사용하지 않는다.
    • 반면에, git add 하지 않은 파일들은 사라지지 않고 유지 된다.
    • git clean 명령어를 사용하면 add 하지 않은 파일까지도 지울 수 있다.

 

 

  • git reset --soft 커밋아이디
    • reset한 커밋은 스테이징 영역으로 복구 된다.
    • 커밋을 할 수 있는 상태가 된다.

 

 

 

  • git reset --mixed 커밋아이디
    • reset한 커밋은 스테이징 되지 않은 상태로 복구 된다.
    • 즉, add뿐만 아니라 커밋까지도 할 수 있는 상태가 되는 것.

 

 

 


 

 

Github

 

🧐 내 코드를 깃허브에 올리자(Push)

  • git push
    • 커밋한 내용들을 원격저장소인 레파지토리로 업데이트 하는 명령어

 

 

  • git push 원격저장소주소 로컬브랜치명
    • 로컬에서 새롭게 생성한 브랜치를 원격저장소에 추가하는 방법

 

 

  • git push -u 저장소주소 main
    • 로컬에서 폴더 생성 후 원격 저장소를 만들 때 사용

 

 

  • git remote add 변수명 변수값
    • 원격저장소 주소같이 텍스트가 긴 것들을 git 명령어를 통해 변수 처럼 사용할 수 있다.
    • ex) git remote add origin 저장소주소 지정 후-u 명령어의 경우 git push 할 때의 주소를 기억하라는 뜻이 있기 때문에 그 다음부터는 그냥 git push만 작성해도 원격저장소로 자동으로 업데이트 해준다.
    • git push -u origin main 이런식으로 축약하여 사용 가능해지며
    • -u 명령어의 경우 git push 할 때의 주소를 기억하라는 뜻이 있기 때문에 그 다음부터는 그냥 git push만 작성해도 원격저장소로 자동으로 업데이트 해준다.

 

 

  • git branch -M main
    • 깃허브의 경우 마스터브랜치를 main으로 사용하라고 요청하기 때문에 마스터 브랜치명의 이름을 main으로 변경해주는 명령어

 

 

 

 

🧐 원격저장소를 가져오자(clone / pull)

  • git clone 원격저장소주소
    • 원격저장소 복제 명령어

 

 

  • git pull 원격저장소주소
    • 원격저장소 복제 후 커밋이나 코드 / 파일 내용들을 추가적으로 가져오는 명령어이다.
    • 만약 내가 push를 하기 전에 다른 팀원이 먼저 push를 한 내용이 있을 경우 나는 push를 할 수 없다는 에러가 발생한다.
    • 이럴 경우 새로운 커밋 내용으로 내 로컬저장소를 업데이트 해준 뒤에 push를 해야 할 때 git pull을 사용하여 업데이트를 진행 한 후 push를 하면 된다.

 

 

  • git pull branchName
    • 특정 브랜치만 가져올 수 있다.

 

 

 

 

 

 

 

🧐 브랜치로 협업해보자(pull request)

 

pull request

 

브랜치 선택 후 오른쪽 초록 버튼(New pull request) 클릭 후 conflict를 해결한 뒤 merge해주면 된다.

정상적으로 merge가 완료된 뒤에는 브랜치를 삭제해주면 되고,

로컬 저장소에서는 main 브랜치의 코드를 가져와야 할 경우 pull 명령어를 사용하여 코드를 업데이트 해주면 된다.

 

 

 

 

🧐 코드를 잠깐 보관해보자(stash)

커밋을 하기 전 쓸데없는 코드나, 테스트를 진행하던 코드들을 메모장이 아닌 다른 곳에 잘라내어 보관 후 원래있던 자리에 정확하게 복구하고 싶다면 이 기능을 사용하면 된다.

 

  • git stash

 

 

  • git stash list
    • 스태시 리스트들을 확인 할 수 있는 명령어이다.

 

  • git stash save ‘스태시 메모’
    • 스태시를 저장할 때 메모사항을 기재할 수 있음

 

  • git stash pop
    • 최근 스태시 내용들을 순차적으로 복구시킬 수 있는 명령어

 

  • git stash drop 번호
    • 특정 번호를 가진 스태시를 삭제

 

  • git stash clear
    • 모든 스태시를 삭제

 

 

 

 


 

 

참고자료

코딩애플 강의
https://codingapple.com/course/git-and-github/

 

(무료) 매우쉽게 알려주는 git & github - 코딩애플 온라인 강좌

  누구나 마음 한켠엔 나만의 웹서비스를 만들고 싶어합니다. 프론트엔드는 어찌저찌 하겠는데 서버 만드는게 어렵고 귀찮다고요? 그렇다면 Firebase를 쓰십시오.   구글이 웹서버를 대신 만들어

codingapple.com

 

반응형