2011-10-31 2 views
59

이 질문은 멍청 할 수도 있지만 잠시 궁금해하고 있습니다. 그것은 git 저장소에 관한 것이지만 다른 DVCS에 대한 로컬 저장소에 대해서도 동일하다고 가정합니다.git 저장소 이동하기

  • 프로젝트

그래서 그 방법은 프로젝트에

  • 다른 모든 폴더를 .git :

    는 시작할 때 내 프로젝트는 다음과 같이 말할 수 있습니다 당신이 바로 그것을 설정할 때 작동할까요?

    다른 곳으로 프로젝트 폴더를 옮기면 아무 것도 변경하지 않겠습니까? 또는 .git 폴더의 모든 저장소 항목은 프로젝트 위의 전체 파일 트리를 무시한 프로젝트 폴더에만 상대적입니다.

    나는 확실히 프로젝트를 움직이는 것이 중요하지 않을 것이라고 확신하지만, 나는 확실히하고 싶었다.

  • +0

    오랫동안 .git 폴더를 이동하면 확인하십시오. –

    답변

    22

    예, .git의 모든 내용은 상대적입니다. 다른 저장소에 명명 된 리모컨으로 저장소를 추가 한 경우 해당 다른 저장소의 원격 URL을 변경해야합니다.

    +12

    아니요, 잘못되었습니다. 아래의 서브 모듈에 대한 답변을 참조하십시오. – erikkallen

    +1

    @erikkallen 그 진술을 어떻게 확인할 수 없었는지에 대한 설명에 대한 저의 의견을보십시오. (무슨 일이 일어나고 있는지에 관해서는 저의 대답을 편집 할 것입니다.) –

    6

    아니요, 다른 것은 변경할 필요가 없습니다. 즉 직접 (가능성) GIT_DIR, GIT_WORKTREE 또는 GIT_INDEX을 설정에는 스크립트

  • 당신은 당신이 할 경우 해야 사본

    • 를 가리키는 외부 저장소가없는 가정하지

      • 입니다

        git remote set-url [--push] origin [email protected]:/home/user/newlocation/Project 
        
    • 012을 사용하여
      에게 그들을 다시 지정할

    (출처는 리모컨의 이름이어야합니다. origin은 원격 저장소에서 복제 할 때의 기본 이름입니다.

    +0

    This! 'remote set-url'을 사용하면 로컬 브랜치의 업스트림 설정에 문제가 없습니다. –

    61

    하위 모듈이 git에서 상대적이지 않은 것으로 나타났습니다. 당신이 서브 모듈을 포함하는 프로젝트를 이동하려면

    그래서, 당신은 부모의 .git/modules/MODULENAME/config 파일에 저장되어있는 서브 모듈의 .git 파일뿐만 아니라 서브 모듈 설정 파일에서 "worktree"속성을 편집해야 .

    +3

    또한'gitdir'에 대한 키 - 값 쌍이 들어있는'MODULENAME/.git'을 편집해야했습니다. –

    +7

    받아 들인 대답. – erikkallen

    +0

    실제로이 값을 상대 경로로 변경했습니다. ../ .. (필요한 경우 많은 경우)를 프로젝트의 루트 디렉토리로 다시 사용했습니다. – Uilleann

    1

    한 컴퓨터에서 다른 컴퓨터로 git 디렉터리를 옮기거나 프로젝트 폴더를 마이그레이션 할 수 있습니다.

    원본에 대한 모든 정보는 시스템의 디렉토리 아래에있는 git 저장소를 초기화 할 때 생성되는 '.git'폴더에 저장됩니다.

    절차

    1. : 다른 위치에 프로젝트 폴더로 이동합니다.
    2. : 프로젝트 폴더를 새 컴퓨터로 이동하는 경우 해당 SSH 키 쌍을 만듭니다.
    3. : 사용중인 말해 자식 : 자식 설정 --global user.email
    8

    표시 현재 원격 (이 물론 선택 단계) "your_git_email_id @ youremail"

    $ git remote show origin 
    * remote origin 
    URL: [email protected]:project.git 
    Remote branch(es) merged with 'git pull' while on branch master 
    master 
    Tracked remote branches 
    master 
    

    $ git remote rm origin 
    $ git remote add origin [email protected]:project.git 
    $ git remote show origin 
    * remote origin 
    URL: [email protected]:project.git 
    Remote branch(es) merged with 'git pull' while on branch master 
    master 
    error: refs/remotes/origin/HEAD points nowhere! 
    New remote branches (next fetch will store in remotes/origin) 
    master 
    

    마지막 명령으로 표시된 오류에 대해 걱정하지 마십시오 : 우리가해야 할 일은 현재 원점을 제거하고 새로 추가하는 것입니다. 원점에서 첫 번째 풀은 그것을 수정합니다 :

    $ git pull 
    From [email protected]:project.git 
    * [new branch]  master  -> origin/master 
    Already up-to-date. 
    $ git remote show origin 
    * remote origin 
    URL: [email protected]:project.git 
    Remote branch(es) merged with 'git pull' while on branch master 
    master 
    Tracked remote branches 
    master 
    

    나는 어쩌면 THRE 그것을 할 수있는 더 좋은 방법입니다 그러나 이것은 나를 위해 일한 여전히 힘내 신선한입니다.

    +1

    큰 조언을 참조하십시오. 그러나 로컬 브랜치는 새로운 'origin'의 원격 추적 브랜치로 업스트림을 설정하지 않습니다. 그러나 다음과 같은 메시지가 있습니다. '현재 지점에 대한 추적 정보가 없습니다. 병합 할 브랜치를 지정하십시오.'제안 :'이 브랜치에 대한 추적 정보를 설정하려면 다음을 사용하십시오 : git branch --set-upstream-to = origin/ master' –