IT

내 Git 저장소가 잘못된 루트 디렉터리에 있습니다.옮겨도 될까요? (./ 대신에../)

itgroup 2023. 8. 11. 21:43
반응형

내 Git 저장소가 잘못된 루트 디렉터리에 있습니다.옮겨도 될까요? (./ 대신에../)

어떻게든 내가git init한 달 정도 전에 나의 최근 프로젝트를 편집했습니다. 나는 내 프로젝트의 루트보다 디렉터리 하나 더 높은 디렉터리에서 명령을 실행했습니다.

그래서 내 저장소는./project디렉토리가 아닌./project/my-new-project디렉토리입니다.어떻게 진작에 이 문제를 깨닫지 못했는지는 모르겠지만, 지금까지 .git 디렉토리를 찾아본 적이 없습니다.

제 프로젝트를 죽이지 않고 저장소를 적절한 디렉토리로 이동한 다음 프로젝트의 새로운 기반이 무엇인지 알려줄 수 있는 방법이 있습니까?디렉토리를 이동하는 것만으로는 작동하지 않습니다.Git는 모든 파일이 삭제되었다고 생각합니다.

저는 반대의 문제가 있었습니다. Git 루트를 상위 디렉토리로 이동해야 했습니다(project/src에서 project로).매우 놀랍게도, 다음과 같은 것들이 효과가 있었습니다!!

src$ mv .git ../ 
src$ cd ..
project$ git add src
project$ git commit -a

Git는 모든 새 파일이 이전 버전의 파일로 이름이 바뀌었고 기록이 손실되지 않았음을 영리하게 감지했습니다.

비슷한 방법을 시도할 수 있습니다. .git 폴더를 이동한 후 커밋하기 전에 파일을 다시 추가합니다.

이것은 저에게 효과가 있었고, 제 모든 역사를 그대로 유지했습니다.잘못된 루트 폴더(실수로 repo를 초기화한 부모)에서:

폴더 이동:

mv .git thecorrectfolder/

Git repo를 다시 초기화합니다.

cd thecorrectfolder/
git init

모든 파일을 다시 추가하고 커밋한 후 다음을 누릅니다.

git add .
git commit -am 'fixing things'
git push origin master

됐어요! 맥주 한 잔 드세요.

다시 초기화한 후 git repo를 커밋하면 다음과 같은 출력이 표시됩니다.

rename {ethanode/coffee => coffee}/app.coffee (100%)

즉, 상위 폴더에서 올바른 폴더를 사용하도록 이름이 변경된 모든 참조입니다.

git filter-branch그런 식으로 역사를 쓸 수 있습니다. 페이지에는 사례도 있습니다.

foodir/가 프로젝트 루트인 것처럼 저장소를 다시 작성하고 다른 모든 기록을 삭제하려면:

git filter-branch --subdirectory-filter foodir -- --all

당신은 아마 원할 것입니다.git clone이전(또는 이후)에 새 하위 디렉토리로 repo를 보냅니다.git filter-branch실행. (필터 분기 전에 복제하고 새 클론에서 필터 분기를 실행하면 원래 상태를 유지할 수 있습니다.).git/뭔가 잘못될 경우를 대비하여 dir를 백업 위치에 배치합니다.)

아마도 저장할 기록을 이미 만들지 않았다면 가장 간단한 것은 삭제하는 것일 것입니다..git하위 디렉터리에서 init를 다시 실행합니다.

문제를 해결하기 위해 Git를 사용한 경우 모든 솔루션은 실제로 변경되지 않은 많은 "이 파일을 여기로 이동" 기록 항목을 남겨야 하지만 생성 시 오류를 수정할 수 있습니다.제대로 만드는 것이 좋습니다.

Git은 해시가 있는 파일을 기억할 수 있습니다.

그냥 움직여요..git를 지정하고 렉토리및디▁root및git 파기내위해기로 모든 파일의 사항을 합니다.--all선택.

$ mv .git ../
$ cd ..
$ git add . --all 
$ git status // => you can see all the files recognized as renamed 100%
$ git commit -m "Moves repo to root directory."

사용하다git-mv로 "과 같이 .git-rm "my-new-project".

저는 제 저장소를 어디든 옮길 수 있는 방법을 찾아 이곳에 왔습니다.

만약을 위해, 나만 그런 것은 아니었습니다. 결국 제가 한 일은 다음과 같습니다.

https://git.wiki.kernel.org/index.php/GitFaq#How_do_I_clone_a_repository_with_all_remotely_tracked_branches.3F 저는 "git clone --mirror"로 제 레포의 복사본을 만들었고, 그 후 더 이상 노출되지 말라고 해서 파일이 새 폴더에 표시되었습니다.(그리고 나서 파일과 로그가 나타났는지 확인했습니다.)만약을 대비해서 오래된 보고서를 잠시 보관했습니다.

그렇게 하면 저는 역사를 잃지 않고 제 레포를 옮길 수 있었습니다.

최고의 인사말, 디나

이와 같은 문제를 겪으면서 저의 궁극적인 해결책은 다음과 같습니다.

  1. .git 폴더를 필요한 위치로 이동합니다.
  2. .git를 방금 이동한 폴더로 디렉토리 변경
  3. 합니다.git reset --hard HEAD
  4. 내용물이 kdiff3 또는 다른 비교 도구와 일치하는지 확인합니다.
  5. 이전 위치에서 현재 버전이 아닌 파일을 삭제합니다.

역사에 영향을 미치지 않고 마법처럼 작동했습니다 - N.B..git 디렉터리를 이동하기 전에 변경 내용을 커밋해야 합니다.

여기에는 두 가지 방법이 있습니다.

  1. cd The WrongDirectory rm -rf.git

  2. .git 폴더와 cd를 오른쪽 디렉토리에 삭제하기만 하면 됩니다.

언급URL : https://stackoverflow.com/questions/1918111/my-git-repository-is-in-the-wrong-root-directory-can-i-move-it-instead-of

반응형