클론받은 로컬 레포 안에서 git clone —depth 1 시 switch 안되는troubleshooting
다음과 같은 에러가 발생한다.
fatal: invalid reference: switch하려는 브랜치 이름
혹시 --depth 1 옵션이 문제인거 같아 git fetch --unshallow로 master 브랜치의 모든 사항을 끌어온 후, switch 해도 같은 에러 문구가 나왔다.
해결방법: 아무리 git clone --depth=1 이후에 별짓을 다해도 git switch를 할 수 없었다.
git fetch --unshallow로 아예 depth 옵션을 풀어버리거나, 처음부터 git clone -b '스위치하려는 브랜치 이름' --depth=1으로 해야될 듯 하다.
--depth 옵션이 원격 브랜치 정보도 빼고 클론되는 거 같다.
다른 사람과 종종 협업을 하다보면 git push를 기분좋게 입력했을 때 충돌이 날 때가 있다.
이 때는 브랜치를 통으로 날리고 새로 만들어 복사하는 것이 아니라, git pull 혹은 git pull --rebase 옵션을 사용해 충돌을 해결해서 push한다.
차이점은 git pull을 하면 pull 한 브랜치와 merge되었다는 하나의 커밋 메시지만 이력에 존재한다. --rebase를 하면 끌어온 브랜치의 커밋이력도 섞어서 최종 이력에 남는다.
개인적으로 git restore .으로 수정 사항을 날려버리지만, git checkout . 이라는 명령어도 있다는 걸 알게 되었다.
vscode에 gitlens라는 유용한 확장도구가 있다. 해당 코드를 누가 고쳤는지 알고 싶을 때, 해당 코드를 클릭하기만 해도 우측에 어떤 커밋으로 누가 올렸는지 확인가능하다.
최근에 bitbucket이라는 git을 사용하는 형상관리 툴을 찾았다. 해당 서비스는 jira로 유명한 아틀라시안 사가 운영하고 있고, jira랑 연동도 되기 때문에 팀원들과 협업하기 수월한 거 같다. git에도 비슷한 기능들이 있다는 걸 알지만, 이제는 bitbucket이 더 좋은 거 같다.