Git, SVN
Git Subtree를 이용해서 Repo를 가져오자. (+실수시 대처법)
philo0407
2023. 6. 5. 20:00

사진: Unsplash의Praveen Thirumurugan
종종 이전 디렉터리의 커밋 내역을 포함해서 복사를 하고 싶은 상황이 있다
그런 경우에 유용하다
원격 리포지토리를 추가후에,
옮기고자 하는 자식 디렉터리에 끌고 오는 방식이다
# child repo 추가
git remote add {child} {child repo 주소}
git subtree add --prefix={디렉터리명} {리포 이름} {리포의 브랜치}
git subtree add --prefix=child-dir child main
참고로 아래처럼 -P로 축약해서 사용 가능



참고로 디렉터리를 만들 필요가 없다. (알아서 만들어준다)만들게 될 경우,
"prefix 'child-dir' already exists." 라는 에러가 뜬다.
만일 실수했다면?

필자의 경우 아래처럼 Repository가 만들어졌다 ...

자, 그럼 돌아가야지
git reflog를 입력한다, 그러면

위처럼 사용하지도 않은 reset이 나온다 (필자의 경우 재연을 위해 몇개의 커밋이 더 있다)
사용하지도 않은 reset의 직전이 바로 우리가 원하는 복원지점이다 (subtree add 하기 전)
저곳으로 돌아가면 된다. 어떻게? reset hard로

그럼 산뜻하게 없어져 있다