/ / git сливане от папка subtree в master към разклонение root - git, merge, git-subtree

git се сливат от подменю папка в магистър до клон корен - git, сливане, git-subtree

Всъщност въпросът ми е:
Има ли начин за сливане от папка в майстор да корен в клон?

Това, което искам, е:

  1. read-tree от клон в папката майстор клон
  2. направете някои промени (добавете файлове в папка подребро) под майстор клон
  3. обединете тези промени (добавени файлове) от папката на подтерото в майстор да се клон корен

Опитах този урок: https://git-scm.com/book/en/v1/Git-Tools-Subtree-Merging
Но резултатите са неочаквани:

Направих:

    $ git init
$ touch fileInMaster
$ git add -A
$ git commit --all -m "initial commit"
$ git checkout master
$ git remote add rack_remote https://github.com/schacon/rack.git
$ git fetch rack_remote
$ git checkout -b rack_branch rack_remote/master
$ git checkout master
$ git read-tree --prefix=rack/ -u rack_branch
$ git add -A
$ git commit --all -m "After read-tree to rack folder"
$ echo 0 > rack/fileInRack
$ git add -A
$ git commit --all -m "Add fileInRack file to rack folder"
$ git merge --squash -s subtree --no-commit rack_branch

Това, което очаквам е:

  • Нов файл "fileInRack" в майстор клон в багажник папка
  • Нов файл "fileInRack" в корен на rack_branch

Но след под-дърво сливане git забележете ме:

Изтриване на багажник / fileInRack
Скуош ангажимент - не се актуализира HEAD
Автоматичното сливане мина добре; спря преди извършване според искането

Но имам нужда от добавяне, а не за изтриване.

И така, какво правя погрешно?
Има ли друг начин за сливане от папка в майстор да корен в клон?

Отговори:

0 за отговор № 1

Вместо

git merge --squash -s subtree --no-commit rack_branch

можете да направите

git checkout rack_branch
git merge --squash -s recursive -Xsubtree --allow-unrelated-histories master
git commit -m "commit fileInRack to rack_branch"

EDIT: Причината да се натъкна на този пост е, че имам подобен проблем и решението ми по-горе не работи (виж тук). Забележете редакцията за --no-ff опция. Може би е добра идея винаги да използвате тази опция?