김나임
깃.. 이랑 친해져봅시다 두둥. 탁(후회하는 내 머리 치는 소리)
안녕하세요? 파드 4기 서버 파트 활동 중인 김나임입니다. 이번에 동아리 깃 스터디에서 배운 내용과 개인 경험으로 얻은 Git 꿀팁을 공유하고자 합니다!
깃과 저의 관계는요? 음... 애증 그 자체죠.
가끔은 제가 cmd로 멋있게 Git을 다루는 모습을 보면 뿌듯하지만, 가끔은 Git이 뒤통수를 후려치는 바람에 "git undo 하는 방법"을 검색하고 있는 저를 발견하곤 합니다.. 하하
그래서! 저와 여러분을 위한 Git SOS 모먼트 가이드를 작성해 보려고 해요.
이 글이 한 사람, 혹은 한 프로젝트를 살릴 수 있지 않을까요?
그럼, 바로 고고씽
💡나.. 수정하긴했는데 뭘 수정했는지 모르겠네..
git status를 사용하면 파일 단위로 바뀐 부분 다 알려 줍니다!
git diff를 사용하면 파일 내에 어떤 걸 수정했는지, 한 줄 한 줄 변경사항까지 확인 가능합니다.
💡이거.. 푸쉬(push) 해도 되는건가.. 아.. 자신 없는데
푸쉬 전 상태 점검! 불안할 때 사용하세요.
git push --dry-run" 야 깃, 아 직 push 하지는 말고 그냥 만약!!!! 지금 push 하면 어떻게 될 것 같은지만 알려줘" 하고 하는 cmd 입니다.
💡망했다 API key 올려버렸다
이전 커밋을 취소하지만, 수정된 내용은 그대로 남습니다. API key 올 실수도 깔끔히 해결!
git reset --soft HEAD~1이 커맨드는 대충 git 에게 " 야 방금 거 그냥 없던 일로 하자~" 라고 하는 겁니다!! 저는 실제로 api key 올린 것이 있는데.. 아주 유용하게 쓴 command 입니다..
💡머지(merge) 시작을 했는데 망했네 ^^
충돌났을 때 바로 머지를 중단할 수 있는 구세주 커맨드입니다.
git merge --abort머지 시작하고 망한 것을 감지한 그대? 그냥 빨리 abort 하시면 됩니다 ~ 이즈 괜찮아요!!!!
저도 사실 충돌 메시지를 봤는데 직접 머지 할 만 할 것 같았지만... 한 반쯤 하다가 망한것을 직감했을 때 주저 없이 사용하는 커맨드 입니다 ^^ ..
💡아.. 브렌치(branch) 여기 아닌데
브랜치를 잘못 선택해 작업했을 때 유용합니다.
git stash
git checkout <원래 사용하려 했던 브렌치 이름>
git stash pop이번 주에 있던 상황인데요. git branch 새로운 브렌치 를 생성 후에 checkout 하는 걸 까먹고 행복하게 바꿀 거 다 바꾸면서 코딩하고 있는데 main에서 코드 실험하고 있었습니다... 그래서 이 command를 사용해서 바꾼 부분을 다시 원래 의도했던 브렌치에 적용하였습니다.. 네.. 그런 사연이 있습니다.
한 마디로 이 command들이 해주는 역할은 " 야 git 이거 잠깐 잡고 있어봐 브렌치좀 바꿀게." 하는 것입니다!!
💡?! 뭐야 다 어디 갔지 ?
작업물이 사라졌다면, 이 명령어로 과거 커밋을 찾아 복구할 수 있습니다.
git reflog 이 상황은 사실 많이 일어나지 않습니다!! 하지만!! 저는 그 확률을 뚫고 !! 한번 경험해 봤습니다!!!
분명히 저장했는데 갑자기!!! 다 없어져서 키보드 때리고 울 뻔 했지만. git reflog 해서 내가 한 모든 commit과 actions 다 보여주었고 git checkout까지 해서 그 목 찾은 commit을 찾아서 다시 작업 할 수 있었습니다.
💡이 커밋(commit) 뭐지..?
혼자 작업할 때 커밋 메시지를 깔끔하게 수정할 수 있습니다.
git rebase -i HEAD~1 뒤에 숫자는 원하는 대로 설정 가능~
여러분은 작업하다가 commit message들이 " . ", " 고침 " , " 진짜고침", "진짜고침아마도" 와 같은 내가 무슨 작업 했는지 모를 commit message를 쓴 적 있나요? 저는 많습니다. 그런데 생각보다 나중에 커밋 메시지마저도 중요하게 느껴질 때가 있습니다. 그래서 이 command를 써서 커밋 1 개 뒤로 해서 다시 commit의 메시지를 수정할 수가 있습니다! 그런데 rebase는 본인 repo , 에서만 사용하세요..! 팀 내 프로젝트에서는.. 금지!!
💡아 이 커밋(commit) 부터 망했다.
특정 커밋 상태로 돌아갈 수 있습니다.
git reset --hard <커밋번호>"이때 모습 그대로 돌려놔.." 라고 깃 한테 시키는 겁니다!
💡다 모르겠고 망했다.
최후의 수단입니다. 신중히 사용하세요.
git reset --hard origin/main이거는 최후의 수단. 이거는 마치 git 한테 " 로컬에 바꾼 거 다 그냥 잊어버리고 내 브렌티 서버에 있는거랑 똑같게 만들어줘" 입니다.. 진짜 최최최최후의 수단.
💡아.. 이거 누가 했냐
git blame <파일명> 말 그대도 파일 수정 된 부분 누가 했는지 다 나와서 ㅋㅋㅋ 네.. 말 그대로 문제가 발생했을 때 blame 할 사람을 찾아주는 ㅎㅎ
협업 시 필수 Git Drill~
1. 작업 전 최신 상태로 만들기~
git fetch
git pull origin <브렌치이름>지금 내가 작압히하고 있는 브렌치가 최신 상태인지 확인하기~
2. 브랜치 이름 체계화~
git checkout -b feature/<브렌치이름>암에 feature/ 는 사실 브렌치 이름 정할때 그 브렌치의 역할 을 적어주면 좋아요!!
예시로는 feat/new feature name , fix/ @@ issue 이런 방식으로 하는걸 추천합니다!!
-> 협업 시작전 팀원들과 브첸치 이름 포멧 정하것이 좋게죠?
3. 의미 있는 커밋 메시지 작성하기~
git add <file>
git commit -m "여기다 메시지 작성~"
# 귀찮은 그대들은 위해 두개를 한 줄에..
git commit -am "여기다 메시지 작성~"git add . 도 좋지만, 파일별로 / 기능별로 add commit 하는 습관! 을 추천합니다 :)
그리고 commit을 할 때에도 message가 중요하다고 언급했었죠~? 이와 같이 의미 있는 커밋 메지지 작성하는 게 좋아요! 브렌치 명과 같이 메시지도 팀원들과 미리 메시지 포을 정하고 작업 시작하는 걸 추천해 드려요!
그렇게 한다면 모두가 무엇이 왜 변경되었는지 쉽게 이해할 수 있답니다~
마지막으로 재미를 위해 제가 실제로 최근에 commit 할 때 사용한 메시지 몇 개 남기고 마치도록 하겠습니다!!
FIX: 이번에 진짜 버그 고침. 아마도.
REVERT: 새벽 2시에 망친 거 되돌림.
FEAT: 눈이 소중하니까 다크모드 추가.
REFRACTOR: 동일한 함수 4개를 1개로 합침.
CHORE: 존재 이유를 모르는 파일 삭제.
STYLE: 아무도 못 알아볼 navbar 애니메이션 추가.
저의 Git SOS 아티클, 재미있게 읽으셨나요? 😊
여러분도 유용한 Git 꿀팁이나 재미있던 Git 경험이 있으시다면 마구마구 댓글이나 글로 공유해주세요!
혹시 이번 글이 여러분의 "어?!" 모먼트를 해결하는 데 도움이 되었다면, 저와 Git의 애증 관계도 조금은 개선되지 않을까 기대해봅니다. 😆
모두 즐겁고 성공적인 Git 생활 하시길! 💻✨
여러분의 깃 꿀팁 기다리고 있을게요!