연습하면서 여러 개의 repositories 생성했던거 하나의 repository 로 합치기
0. Github 원격 저장소에 새로운 repository 빈걸로 생성
1. git clone { 위에서 새로 생성한 repository 주소 }
//원격 저장소를 local로 클론하는 작업
2. cd { 방금 생성한 repository가 local에 저장된 위치 경로 }
3. git subtree add --prefix={폴더 이름} {repository 주소} {branch 이름}
-> 이 과정에서 오류가 날 경우 (ambiguous argument 'HEAD': unknown revision or path not in the working tree.' )
-> 해결 방법: git commit --allow-empty -n -m "Initial commit."
4. git push
트러블슈팅 & 주의사항
위의 작업을 하다가 중간에 원격저장소(github 사이트) 에서 README를 추가한다던지 수정하면 에러남... 여기부터 지옥임 ㅠㅠ
그 이유는 원격 저장소와 로컬 저장소의 내용이 달라졌기 때문에 git에서 원래 파일 손실을 막기 위해서 에러를 자꾸 뱉어줌
pull 해야 되는데 이 과정에서 자꾸 에러가 남.. rebase 했다가.. 별 난리를 다 쳐야 하기 때문에 왠만하면 원격저장소에서 README 파일을 수정하거나 추가하지 말자 ㅠㅠ
-> 원인: git pull 하다가 꼬였음-> 해결: 새로운 폴더를 만들고 여기에다가 git pull 한 다음에 원래 폴더에 대치 (switch)
여튼 깃헙 원격 사이트에서 README 수정 또는 추가시 git pull을 해야 원격 = 로컬 일치가 된다.
위의 케이스가 아니더라도 보통 꼬였을 때 해결 방법 ??
꼬였던 원인 : git add 하기 전에 branch 지정해준 경우가 대다수였다.
branch 지정하지 않고 바로 add했다면 별 문제 없었을건데..
여튼 해결책:
repository 원격으로 올린 폴더 안에 같은 이름으로 폴더 생성
여기에 원격으로 올렸던 폴더를 git clone + 해당 원격 폴더 주소
그리고 터미널에서 cd + 새로 만든 같은 이름의 폴더로 이동
git add .
git commit -m " ~~~ "
git push -u origin main
그럼 이제 원격 repository = local 같아졌을거임.
그렇다면 이제 새로 만든 폴더를 상위 폴더로 당기고 (원래 폴더는 이름 잠시 _2 이런식으로 바꿔놓고 원래 폴더 삭제. 새로 만든 폴더만 파인더에 남긴다)
참고 사이트
https://homoefficio.github.io/2015/07/18/git-subtree/
'Git' 카테고리의 다른 글
remote origin already exists. 에러 뜰때 해결방법 (0) | 2022.04.26 |
---|---|
[Mac] 맥 사용하여 터미널로 깃허브에 올리기 (0) | 2022.04.22 |