gitrepo1 디렉토리가 있습니다 . 이 디렉토리는 git 저장소입니다.
-
이 gitrepo1 을 다른 디렉토리 newrepo 로 옮기고 싶습니다 .
-
newrepo 디렉토리 는 git 기록 손실이없는 새 git 저장소 여야하며 gitrepo1 디렉토리를 포함해야합니다 .
-
gitrepo1 디렉토리 는 색인이 없는 디렉토리 ( newrepo 내부 )
.git
여야합니다. 즉, 더 이상 독립적 인 git 저장소 또는 하위 모듈이 아니어야합니다.
어떻게 할 수 있습니까?
답변
아주 간단합니다. Git은 디렉토리 이름이 무엇인지 신경 쓰지 않습니다. 안에있는 것만 신경 쓰죠. 따라서 간단하게 다음을 수행 할 수 있습니다.
# copy the directory into newrepo dir that exists already (else create it)
$ cp -r gitrepo1 newrepo
# remove .git from old repo to delete all history and anything git from it
$ rm -rf gitrepo1/.git
저장소가 크고 기록이 긴 경우 복사본이 상당히 비쌉니다. 쉽게 피할 수 있습니다.
# move the directory instead
$ mv gitrepo1 newrepo
# make a copy of the latest version
# Either:
$ mkdir gitrepo1; cp -r newrepo/* gitrepo1/ # doesn't copy .gitignore (and other hidden files)
# Or:
$ git clone --depth 1 newrepo gitrepo1; rm -rf gitrepo1/.git
# Or (look further here: http://stackoverflow.com/q/1209999/912144)
$ git archive --format=tar --remote=<repository URL> HEAD | tar xf -
를 만든 후에는 원하는 경우 안에 newrepo
넣을 gitrepo1
수 있습니다 newrepo
. 절차를 변경하지 않고 gitrepo1
다시 작성하는 경로 만 변경합니다 .
답변
조금 늦었고 질문은 이미 답변되었지만 두통없이 수행하려면 :
- 와 이전 자식 폴더의 현재 지점 당신이 무엇을 확인
git status
하자의는 분기 말 개발 - 디렉토리를 새 git 폴더로 변경 한 다음
git clone
프로젝트를 repo에서 새 폴더로 변경합니다. - 새 폴더에서 현재 분기를 확인하십시오.
git checkout development
- 사용하여 이전 한 개 새 폴더를 Syncronize
rsync
, .git 폴더를 제외 :rsync -azv --exclude '.git' gitrepo1 newrepo/gitrepo1
그런 다음 중단 한 부분을 계속하는 것이 좋습니다.
답변
그것보다 훨씬 간단합니다. 방금 한 작업입니다 (Windows에서는 작동하지만 다른 OS에서는 작동해야 함).
- newrepo를 만듭니다 .
- gitrepo1 을 newrepo 로 이동합니다 .
- .git 을 gitrepo1 에서 newrepo로 이동 합니다 (한 수준 위로).
- 변경 사항을 커밋합니다 (필요에 따라 추적 수정).
Git은 디렉토리를 추가하고 여러 파일의 이름을 변경 한 것을 확인합니다. 별거 아니야.
답변
저는 전문가는 아니지만 .git 폴더를 새 폴더에 복사 한 다음 호출합니다. git reset --HARD