2014-11-15 5 views
4

나는 자식 저장소를 ~/a으로 지정했습니다.저장소 밖에있는 폴더를 git하는 방법은 무엇입니까?

동시에, 다른 응용 프로그램에서 업데이트되는 ~/b/content/data/의 자료가 있습니다.

백업 목적을 위해, 나는 폴더를 이동하지 않고 자식 ~/a, ~/b/content/data/의 물건을 추가하고 싶습니다. 물론 수동으로 복사하지 않아도됩니다.

그럴 수 있습니까? 경유는 ln입니까?

+1

[이 질문] (HTTP ://stackoverflow.com/q/86402/1928529) git이 symlink를 따르도록하는 것에 대한 좋은 대답/옵션이있다. – dennisschagt

답변

0

~/b/content/data~/a/b에 연결하면 git은 실제 내용이 아닌 경로 이름에 대한 참조 만 저장합니다. 반면에 ~/b/content/data~/a/b으로 이동하고 ~/b/content/data으로 다시 링크하면 git이 파일을 커밋합니다.

2

심볼릭 링크 된 디렉토리를 추가하는 것은 git 1.6.1까지 작동합니다. 이제 다른 옵션이 있습니다.

  • 알고 싶거나 저장하려는 개별 파일에 대해 하드 링크를 만들 수 있습니다.
  • 실제 데이터를 저장소에 넣고 ~/b/content/data/을 심볼릭 링크로 만들 수 있습니다.
  • 링크 대신 sudo mount --bind SOURCEDIRECTORY TARGETDIRECTORY을 사용할 수 있습니다.
+0

이 동의한다. 3 번째 옵션 : sudo mount --bind SOURCEDIRECTORY TARGETDIRECTORY'가 실제로 작동 함 –

+0

이 마운트를 어떻게 취소 할 것인가? –

+0

'sudo umount SOURCEDIRECTORY'와'sudo umount TARGETDIRECTORY'가 작동해야합니다. – user2291758

0

더 많은 방법이해야 할 일이

git --work-tree=~/b/content/data add . 

일회용 지정한 worktree 어떤이 있는지 여부를

확인 (사용자가 지정하는 경로 이름이 주어진 worktree을 기준으로)을 위해 그것을 할 것입니다 (find that/path -name .git) 중첩 된 리포지토리는 하위 모듈이라고도하며 자체 리포지토리에 추가되는 것은 현재 체크 아웃 된 커밋 ID뿐입니다.

add와 같은 체크 아웃은 항상 현재 작업 트리에 있기 때문에 위의 명령을 수행 한 다음 커밋 한 다음 다시 정의하지 않고 체크 아웃하면 ~/b/content/data 님의 내부는 ~/a에 체크 아웃됩니다.

당신이 저장소에 대한 지속적인 worktree을 설정하려면,

git config core.worktree ~/b/content/data 

또는 상대 경로로합니다 (.git 디렉토리를 기준으로)

git config core.worktree ../../b/content/data # ~/a/.git/.. is ~/a