"슈퍼 프로젝트"의 파일 디렉토리에서 다른 사람들과 작업하기 위해 "하위 프로젝트"를 만들려고했지만 git 하위 트리에서 작동하도록 고심하고 있습니다. 이상적으로 다른 사람들이 하위 프로젝트에서 작업 한 다음 업스트림 변경 사항을 가져와 내 업데이트를 푸시 할 수 있습니다.git subtree : 하위 프로젝트 분할, 작업 및 병합
여기에이 용도의 MWE가 있습니다. 가 나는 "하위 프로젝트"다음 git subtree
원격 REPO "하위 프로젝트"에 하위 프로젝트가 포함 된 "슈퍼 프로젝트"를 만들 :
$ mkdir subtree-test && cd subtree-test
# create super-project
$ mkdir super-project && git init super-project && cd super-project
$ echo "foobar" >> super.txt
$ git add super.txt && git commit -m "add file"
# create sub-project
$ mkdir sub-project
$ echo "foobar" >> sub-project/sub1.txt
$ git add sub-project/sub1.txt && git commit -m "add file"
# prepare a bare subtree repo named "sub"
$ git init --bare ../sub-project
$ git subtree push --prefix=sub-project/ ../sub-project master
그런 다음에 "하위 프로젝트"복제를 "하위 "- 라이브, 어떤 일을하고 업스트림 밀어 :
다음$ cd ../
$ git clone sub-project sub-live
$ cd sub-live
$ echo "foobar" >> sub2.txt
$ git add sub2.txt && git commit -m "add file"
$ git push
슈퍼 프로젝트에 다시 병합을 시도 :
$ cd ../super-project
$ git subtree pull --prefix=sub-project/ ../sub-project master
과 오류가 있습니다 :
를warning: no common commits
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 5 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (5/5), done.
From ../sub-project
* branch master -> FETCH_HEAD
fatal: refusing to merge unrelated histories
나는 git subtree
사용에 관한 기사를 읽었습니다. 그러나 대부분의 경우 서브 프로젝트는 나중에 수퍼 프로젝트에 추가됩니다. 필자의 경우 서브 프로젝트는 수퍼 프로젝트에서 비롯된 것으로서 이러한 복잡한 문제를 일으켰을 수 있습니다.
내가 잘못 했습니까? 그리고 여기서 어떻게해야합니까? 문제에 대한, 그러나
options for 'split'
--annotate ... add a prefix to commit message of new commits
-b, --branch ... create a new branch from the split subtree
--ignore-joins ignore prior --rejoin commits
--onto ... try connecting new tree to an existing one
--rejoin merge the new branch back into HEAD
: 난 당신이 git subtree add
를 사용하여 다음 디렉토리를 먼저 제거해야 할 생각 훨씬 더 쉽게이 만드는 초기 분할에 대한