[TIL] 05.21 :: github

yeseul·2024년 5월 21일

<TIL>

목록 보기
17/43

월요일 타임어택할때 튜터님의 깃허브에서 테스트 레포지토리를 fork 해야했다.
저번 팀플때는 PR 만 했어서 이번에 fork 를 처음하다보니.. 체크박스를 선택해놓고 fork 를 진행해서 main 브랜치만 복사되었다.
2개의 타임어택 문제 중 계산문제만 fork 해온 레포지토리에 올렸고,
TodoList는 새로운 레포지토리 만들어서 clone 으로 받아왔다..!
이것도 push 할때 문제가 있었는데, 오랜만에 겪는 git 문제들이라 남겨보려고 한다.
+ 팀장님의 브랜치 사용 꿀팁까지!


* git Fork : 복사

  • 체크박스를 해지하지 않으면 ex1 브랜치만 복사된다.

📍 튜터님 코멘트

과제 내드리면 본인 github 으로 fork 하실 때 그림의 체크박스 해제하시고 포크 진행하셔야 모든 브런치 내용들이 여러분 깃헙레포로 복사가 됩니다.

그리고 git remote -v 명령을 통해서 현재 origin 으로 등록되어 있는 github 레포 url 이 본인 계정으로 되어있는 지 한번 확인하신 후에 push 하시는 것을 권장 드립니다.

만약 본인 레포 url이 아니라면 git remote remove origin 으로 origin 삭제하신 뒤에
본인 레포url로 git remote add origin 본인레포url 로 origin 설정 다시 하시고 push 하시면 됩니다.

  • todolist push 할때 튜터님 레포로 연결되어있어서 안올라가더라..!
  • 위에 알려주신 방법대로 하니 내 레포로 잘 push 되었다.
    순서를 정리하자면, 아래와 같다.
    • git remote -v
    • git remote remove origin
    • git remote add origin 내 레포지토리 주소
    • git remote -v : 한번 더 확인해보기
    • git push

* git stash : 임시저장

주로 작업 중 다른 브랜치로 전환해야 할 때 사용한다.
이를 통해 작업 중 다른작업을 할 수 있고, 나중에 다시 원래 작업을 이어갈 수 있다.

💭 브랜치 이동이 안된다..

  • hw1 과제를 진행하다가 hw2에도 활용하는 코드가 있어서 이동해서 확인해보려고 하니, checkout으로 브랜치를 이동해도 파일안의 코드가 안바뀌더라.!
    -> 이유는 저장/커밋을 안하고 이동하려고해서 그랬던 것이었다.

💡 작업 디렉토리에 변경 사항이 있는 경우, Git은 브랜치를 전환하지 않고 변경 사항을 유지한다. 이는 작업 중인 내용이 손실되는 것을 방지하기 위한 것이다.

  • 팀장님께 여쭤보니 commit 하기엔 애매한..상태라던지, 바로 다른 브랜치로 이동해서 작업해야될때 사용하는 명령어인 git stash, git stash pop 에 대해 알게되었다.

  • hw1. 브랜치에서 작업 중이다가 hw2. 브랜치로 이동해야하면,(+commit 하긴 싫고)
    git status 로 hw1. 브랜치 변경사항 확인후, git stash 로 임시저장.
    -> 저장된 변경사항은 "stash" 라는 장소에 보관된다.
  • git checkout <branch name> 으로 브랜치 전환
  • 다시 원래 브랜치에서 작업하려고하면, 브랜치 이동 후 git stash pop 을 통해 가장 최근에 저장된 stash 내용을 작업 디렉토리로 가져오고, 해당 stash 내용을 삭제한다.
  • 작업을 이어서 하면 된다.

* git stash pop

-> git stash pop 명령어를 사용하면,
가장 최근에 저장된 stash 내용을 작업 디렉토리로 가져오고, 해당 stash 내용을 삭제한다.

* git stash apply

-> git stash apply 명령어는
stash 내용을 가져오지만 stash 내용은 그대로 남는다.

둘을 비교하자면
git stash pop은 stash 내용을 가져오면서 해당 stash를 삭제하는 반면,
git stash apply는 stash 내용을 가져오기만 한다.

💭 그럼 둘 중에 뭐가 더 많이쓰일까? 뭔가 메모리 측면에서도 pop이 많이 쓰일거같은데..🤔

일반적으로 git stash pop이 git stash apply보다 더 많이 사용된다.
대부분의 경우 stash된 내용을 한 번만 적용하면 되므로, git stash pop이 더 편리하다.
또한 git stash pop은 충돌 해결 과정이 포함되어 있어 한 번에 처리할 수 있지만, git stash apply는 충돌 해결을 별도로 해야 한다.

예상대로 stash apply를 계속 사용하면 stash 목록이 누적되어 메모리 사용량이 증가할 수 있다.
이 경우 주기적으로 git stash clear를 실행하여 stash 목록을 정리해줘야 한다.
따라서 메모리 사용량 관리 측면에서도 git stash pop이 git stash apply보다 더 효율적이다.

📍stash apply 사용하는 경우

git stash apply는 stash된 내용을 여러 번 적용해야 할 때 유용하다.

1. 병합 중 충돌 해결
브랜치를 병합하는 중 충돌이 발생했을 때, git stash apply를 사용하면 충돌을 해결하기 전에 작업 내용을 임시로 저장할 수 있다. 충돌을 해결한 후 git stash apply로 작업 내용을 다시 적용할 수 있다.

2. 실험적인 변경 사항 저장
실험적인 변경 사항을 git stash apply로 저장해두었다가, 나중에 필요할 때 다시 적용할 수 있다. 이렇게 하면 실험적인 변경 사항을 안전하게 관리할 수 있다.

3. 브랜치 간 작업 내용 공유
한 브랜치에서 작업한 내용을 다른 브랜치에 적용해야 할 때 사용하면 편리하다.
작업 내용을 stash에 저장한 후 다른 브랜치로 전환하여 git stash apply로 적용할 수 있다.

0개의 댓글