Всъщност въпросът ми е:
Има ли начин за сливане от папка в майстор да корен в клон?
Това, което искам, е:
- read-tree от клон в папката майстор клон
- направете някои промени (добавете файлове в папка подребро) под майстор клон
- обединете тези промени (добавени файлове) от папката на подтерото в майстор да се клон корен
Опитах този урок: 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
опция. Може би е добра идея винаги да използвате тази опция?