Вы можете сделать это очень эффективно в своем текущем репо:
Начиная с:
# ...---o---H HEAD, master
do
git cat-file -p master \
| sed '1,/^$/d' \
| git commit-tree HEAD^{tree} \
| xargs git branch public
, чтобы получить
# ...---o---H HEAD, master
#
# H' public <-- H's exact content and commit message, no history
Затем,
git merge -s ours public
# ...---o---H---I HEAD, master <-- gives later merges an accurate base
# /
# H'' public
git remote add public -t public its://u/r/l # <-- '-t public` sets default push
git push public
, и все готово.
(править: добавлено -t public
безопасное воспроизведение, поэтому вам нужно сделать что-то явное для нажатия непубличная история)
Я хотел бы увидеть ваш журнал ошибок. Читая код, я бы сказал, что ваша проблема в том, что вы пытаетесь обновить элементы интерфейса из потока, который не является потоком интерфейса.
Чтобы быстро протестировать и решить вашу проблему, просто поместите button.setText в блок runUIThread. Для связи с UI-потоком из другого потока вы можете использовать Handler.
DOCS: https://developer.android.com/training/multiple-threads/communicate-ui https://developer.android.com/reference/android/app/Activity #runOnUiThread (java.lang.Runnable)
Используйте объект Handler для обновления элементов пользовательского интерфейса из другого потока.
См. Этот вопрос для примера. Как сделать textView.setText из Thread?