programing

깃 저장소를 다른 디렉터리로 이동하고 해당 디렉터리를 깃 저장소로 만드는 방법?

closeapi 2023. 10. 18. 22:08
반응형

깃 저장소를 다른 디렉터리로 이동하고 해당 디렉터리를 깃 저장소로 만드는 방법?

저는 gitrepo1 디렉토리를 가지고 있습니다.이 디렉토리는 git 저장소입니다.

  • gitrepo1을 다른 디렉토리 new repo로 옮기고 싶습니다.

  • 디렉터리 newrepo는 git 이력 손실이 없는 새 git 저장소여야 하며 디렉터리 gitrepo1을 포함해야 합니다.

  • 디렉터리 gitrepo1은 지금 디렉터리(newrepo 내부)여야 하며, 아무 것도 없습니다..gitindex, 즉 더 이상 독립적인 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뒤로.

그것보다 더 간단합니다.Windows에서는 이 작업을 수행했지만 다른 OS에서는 작동해야 합니다.

  1. 레포를 만듭니다.
  2. gritrepo1을 새 레포로 이동합니다.
  3. .gitgitrepo1에서 new repo(한 레벨 위로)로 이동합니다.
  4. 변경을 커밋합니다(필요에 따라 추적 수정).

당신이 디렉토리를 추가하고 파일 이름을 바꾼 것만 봐도 알 수 있습니다.별것 아닙니다.

전문가는 아니지만 .git 폴더를 새 폴더에 복사한 다음 다음 호출합니다.git reset --hard

두통 없이 이 작업을 수행하려면:

  1. girtrepo1의 현재 분기는 무엇인지 확인합니다.git status, 지점 "개발"이라고 합시다.
  2. 디렉토리를 새 레포로 변경한 다음git clone저장소로부터의 프로젝트
  3. 보고서의 분기를 이전 분기로 전환합니다.git checkout development.
  4. 레포를 이전 레포와 동기화(girtrepo1 사용)rsync, .git 폴더 제외:rsync -azv --exclude '.git' gitrepo1 newrepo/gitrepo1. 당신은 이것을 할 필요가 없습니다.rsync물론이죠, 하지만 아주 매끄럽습니다.

이점:

기존 지점, 단계적 변경 등 중단했던 부분을 정확히 계속 진행하는 것이 좋습니다.

git 저장소를 다른 디렉토리로 이동하고 미러링 방법을 사용하여 해당 디렉토리를 git 저장소로 만드는 간단한 방법

git clone --mirror git@example.com/mirror-repository.git

cd mirror-repository.git

아래 명령을 사용하여 변경사항을 새 저장소로 푸시

git push --mirror git@example.com/new-mirror.git

이렇게 하면 미러 저장소에서 사용할 수 있는 모든 분기와 태그를 얻을 수 있고 이를 새 위치로 복제합니다.

git push --mirror로 복제되지 않은 저장소의 mirror도 사용하지 마십시오.원격 저장소를 로컬 참조(및 로컬 분기)로 덮어씁니다.git clone --mirror는 git clone보다 선호됩니다 -- bare 전자가 git notes와 일부 다른 속성도 복제하기 때문입니다.

윈도우에서는 xcopy로 작동합니다.copy 명령어는 숨겨진 파일을 복사하지 않습니다.root 폴더에서 다음 명령을 실행합니다.

xcopy subfolderofRepo .\ /s /e /h

언급URL : https://stackoverflow.com/questions/19097259/how-to-move-a-git-repository-into-another-directory-and-make-that-directory-a-gi

반응형