2009-12-15 4 views
1

기존의 파일 트리를 새로운 브랜치로 git 저장소에 추가하려고합니다. (기존의 트리를 다른 VCS에서 버전을 지정했기 때문에 기존의 git 트리로 복사 할 수 없습니다. 동기화).기존 파일 트리에서 git에 새 분기를 만들려면 어떻게해야합니까?

이것이 가능합니까?

EDIT : 기존 원격 저장소에 연결된 새로운 git 저장소를 설정 한 다음 결과 .git 폴더를 이동 하시겠습니까? 그건 정말 hackish 보인다,하지만 그것을 할 수있는 방법 ...

+0

ClearCase를 시도 할 수 있습니다? 당신은 또한이 질문을 볼 수 있습니다 : http://stackoverflow.com/questions/1146224/preserving-history-when-using-mercurial-ontop-of-clearcase (수은이 포함 된 경우에도 문제가 남아 있습니다. 관련) – VonC

답변

0

인 경우에 당신은

  • 새로운 지점을 생성 (git checkout -b aNewBranch)
  • (git add path/to/new/tree)
  • 를 추가하려면 트리를 복사 할 수 있습니다
  • 및 커밋

미래는 git의 새 트리와 o의 것 사이에서 동기화됩니다. VCS는 수동이어야합니다 : 즉, diff 도구를 사용하여 두 개의 트리를 비교하고 두 디렉토리 간의 관련 파일을 업데이트/추가/제거합니다. 당신이 그것을합니다 (VCS에)있는 나무를 보존해야하는 경우


, 당신은 할 수 있습니다

  • 은 다른 자식
  • 또는 내 단지 git init을 다스 려하여 Charles Bayley's answergit add을 참조하여 " 다른 VCS "나무
    • 는 당신은 a submodule (리터로 그 자식의 repo를 고려할 수 간단한 ESS는하지만, 당신 힘내는 VCS 트리의 정확한 기준을 REPO 당신이
+0

내가 할 수없는 부분은 트리를 복사하는 것입니다. 나무를 추가 할 방법을 찾아야합니다. 기존 원격 저장소에 연결된 새로운 git 저장소를 설정 한 다음 결과 .git 폴더를 이동 하시겠습니까? – pkaeding

+0

diffing을 처리하고 저장소를 동기화하는 도구가 있습니다. (수동으로 비 git VCS를 업데이트하고 git에 커밋합니다. 그리고 git에서 어떤 파일이 변경되었는지 알아낼 스크립트가 있고 체크 아웃하고 커밋합니다. 다른 VCS로) – pkaeding

0

나는 전에 .git 폴더를 이동하고 hackish 동안 작업을했다) 참조 할 수 있습니다.

"진짜"VCS로 TFS를 사용했지만 내 컴퓨터에서 git을 사용했다. TFS 브랜치는 실제로 복사하기 때문에 TFS 브랜치에서 작업했을 때 나는 git에서 브랜치를 체크 아웃했다. 그런 다음 .git 폴더를 TFS 분기 루트로 이동했습니다.

0

VCS는 무엇을 사용하고 있습니까? 나는 당신의 VCS로부터 Git에 수입업자가 있는지 살펴볼 것입니다.

그런 다음 새 지점 (git checkout -b import-branch)으로 전환하고 가져 오기 도구를 실행하십시오.

+0

다른 VCS는 ClearCase입니다. 현재 http://genaud.net/2008/08/clearcase-globally-git-locally/에 접속하고 있습니다. – pkaeding

0

가장 간단한 방법은 새 파일을 추가하고 색인을 지우고 현재 위치에서 새 파일을 추가해야하는 지점을 기반으로 분기를 만드는 것입니다.

git checkout -b newbranch [<option starting sha1>] 
git rm -r --cached -- . 

cd /other/tree 
git --git-dir=/first/tree/.git add . 

이 작업을 완료하면 원래 위치에서 작업 트리를 재설정해야 할 수 있습니다.

cd /first/tree 
git checkout -- . 
+0

그 트리를 커밋 할 때 여전히 잘못된 태생을 보여줄 것입니다. –

+0

@Randal Schwartz : 무슨 뜻인지 잘 모르겠습니까? 원래의 질문에 대한 독서는 대체 트리가 파일 시스템의 다른 곳에 있었고 다른 프로젝트와 다른 버전 제어라고해도 동일한 프로젝트를 대표한다는 것이 었습니다. 이 자식은 자동으로 적절한 부모 커밋을 선택할 수 없기 때문에 사용자가 결정할 수 있어야합니다. 나는 똑같은 이유로 내가 관련된 하나의 프로젝트에서 내가 기술 한 행동을 수행한다. 올바른 트리를 올바른 지점으로 가져 오는 것은 내 책임이지만 지점 추적은 잘 작동합니다. –

1

당신은 다른 디렉토리에서 파일을 추가 이눔하는 --work-tree=<path> 옵션을 사용 예컨대 :

git --work-tree=/path/to/file add . 
관련 문제