У меня есть филиал master
и филиал es
. es
был реконструирован в местном масштабе:Как восстановить ветку Git?
git checkout master
git checkout -b es2
git cherry-pick A C E D
git branch -D es
git checkout master
git branch -m es2 es
где А, С, D и Е являются некоторые выбранные фиксаций в es
филиала.
После этого я должен был заставить толчок:
git push --all -f
С самого начала до этого момента никто не толкнул или вытащил из репо.
Но все прошло хорошо. Проблема возникла, когда я попытался переустановить ветку на другом компьютере. Пользователь имеет эту отраслевую структуру:
master - es - dev
dev
имеет только один фиксации (скажем, X). Это проблематично последовательность команд GIT:
git checkout master
git pull
git branch -f es origin/es
git checkout dev
git rebase es
Последние перебазироваться производят много конфликтов с фиксаций, которые не включены в новый es
отрасли, но они включены в master
отрасли. После выполнения некоторого рытья мы обнаружили, что мы можем восстановить структуру, делая это вместо перебазирования:
git checkout es
git checkout -b dev2
git cherry-pick X
git branch -D dev
git checkout es
git branch -m dev2 dev
Это заставляет меня думать, что проблема заключается в том, что «старый» dev
филиала имеет некоторые ссылки или ссылку на old es
, и поэтому rebase пытается добавить к ветке dev
больше, чем X commit. Мне интересно, есть ли еще один более чистый способ заставить резидентную папку пользователей реплицироваться с ветвями репозитория.
Примечание: пользователи никогда изменение es
или master
, просто dev
.