Ответ 1
Мне также пришлось удалить ветвь отслеживания
git branch -d -r origin/develop
Аннотация: Чтобы воспроизвести ошибку
git branch -D <branch>
и git checkout -b <branch> --track origin/<branch>
git pull
вы получаете ! [rejected] <branch> -> origin/<branch> (non-fast-forward)
чтобы исправить это, вы также должны удалить информацию дистанционного отслеживания с помощью git branch -d -r origin/<branch>
OLD: кто-то удалил ветку разработки и создал ее, чтобы удалить все ветки функций и снова использовать мастер. Затем он добавил некоторые из ветвей функций, но не некоторые другие, которые создавали проблемы.
Я сделал git branch -D develop
и git checkout -b develop --track origin/develop
.
Когда я сейчас попробую git pull
, я получу a ! [rejected] develop -> origin/develop (non-fast-forward)
a git remote show origin
показывает
Local refs configured for 'git push':
develop pushes to develop (local out of date)
Теперь я могу сделать git fetch origin develop
и git merge FETCH_HEAD
, но потом у меня есть некоторые конфликты, и он хочет подтолкнуть много вещей для развития. (может быть, старая ветвь совершает?) И с git reset --hard
я вернулся туда, где трюк git показывает отклоненное сообщение.
Как лучше всего проверить восстановленную ветку?
EDIT: даже когда я делаю git branch -D develop
, я получаю с git pull
! [rejected] develop -> origin/develop (non-fast-forward)
и git remote show origin
все (в актуальном состоянии)
EDIT: я не узнал его поначалу, потому что сообщение фиксации было таким же, но после reset HEAD находится на шаге, которого нет у удаленного, так что все еще на "старой" ветке?
Мне также пришлось удалить ветвь отслеживания
git branch -d -r origin/develop
Вы не можете вытащить, потому что теперь это другая ветка.
Возможно, вам стоит начать с нуля и получить ветвь remote develop
как новую локальную ветвь!
git checkout -b new_develop --track origin/develop
После этого вы можете объединить или изменить между ветвями на локальном компьютере. Сравните деревья каталогов и другие файлы.
Если вы закончили редактирование, просто удалите локальную ветвь develop
и переименуйте new_develop
в develop
.
У меня другой сценарий. Моя ветка была удалена в Bitbucket, но существовала локально. Когда я фиксирую и отправляю локально в ту же ветку удаления, я не получаю ни одного отклоненного сообщения, напротив, оно прошло успешно, и ветвь удаления была воссоздана в Bitbucket. Как мы можем предотвратить это?