Git Subtree только один файл или каталог

18

Я использую Git Subtree, как показано ниже:

git subtree add --prefix=directory_destination_path --squash [email protected]:kicaj/projectname.git master

Но в пути: directory_destination_path копировать все репо из projectname.git

Как скопировать в подкаталог directory_destination_path или только файл из projectname.git ?

EDIT:
Еще один вопрос:
Как обновить (автоматические) изменения файлов в обоих хранилищах остались прежними? Это возможно?

    
задан kicaj 11.03.2014 в 20:10
источник

1 ответ

18

Если я понимаю, вы, похоже, хотите объединиться в определенном каталоге другого репозитория и хотите, чтобы он был поддеревом в вашем репозитории. Я собираюсь вызвать каталог интереса в project.git path_of_interest_in_project и вызвать пункт назначения в вашем репо directory_desination_path .

Попробуйте добавить удаленный project.git как удаленный, а затем локально проверьте один из его ветвей. Затем используйте git-subtree split , чтобы разделить только каталог project.git, который вас интересует. После этого объедините его в свое репо с помощью слияния поддерева.

git remote add project [email protected]:kicaj/projectname.git
git branch project_master project/master

В ветке project_master теперь должна храниться вся история вашего проекта.git repo.

Затем вам нужно будет использовать процесс git-subtrees-split .

git checkout -f project_master
git subtree split --squash --prefix=path_of_interest_in_project -b temp_branch

Теперь должна быть ветка с именем temp_branch , содержащая только интересующую вас директорию. Теперь вы можете выполнить git-subtree-merge , чтобы привести все это в свое репо.

git checkout -f master
git subtree merge --prefix=directory_destination_path temp_branch

Это должно объединиться в temp_branch в вашу главную ветвь.

    
ответ дан eddiemoya 11.03.2014 в 21:29
  • git subtree split squash --prefix = path_of_interest_in_project temp_branch всегда возвращает: не существует; использовать git subtree add –  kicaj 11.03.2014 в 22:20
  • Я меняю path_of_interest_in_project на модель / поведение - есть каталоги –  kicaj 11.03.2014 в 22:21
  • Проблемы: вам нужно git fetch, прежде чем вы сможете использовать git branch, иначе вы получите фатальный: не допустимое имя объекта. И когда я добрался до деления поддерева git, я не был уверен, что делать после этого, потому что у меня фатальный: неоднозначный аргумент «temp_branch»: неизвестная ревизия или путь не в рабочем дереве. –  2rs2ts 08.08.2014 в 22:37
  • В команде была опечатка. Я отредактировал его. A -b необходимо было до имени ветки. Теперь он работает точно так, как предполагал OP. –  Lefteris 06.05.2015 в 17:12
  • , то как обновить только один файл или каталог? делать все шаги снова? –  ElonChan 06.01.2016 в 09:43
Показать остальные комментарии