Более ранние версии Git, используемые для разрешения проталкивания в текущую извлеченную ветвь не-пустого хранилища.
Оказывается, это было ужасно запутанно. Поэтому они добавили предупреждающее сообщение, которое вы видите, что также очень запутанно.
Если первый репозиторий просто выступает в роли сервера, преобразуйте его в пустой репозиторий, как рекомендуют другие ответы, и покончите с этим.
Если, однако, вам нужно иметь общую ветку между двумя репо, которые оба используются, вы можете добиться этого с помощью следующей настройки
Repo1 - будет выступать в роли сервера, а также использоваться для разработки
Repo2 - будет только для разработки
Настройте Repo1 следующим образом
Создайте ветку, чтобы поделиться работой.
git branch shared_branch
Чтобы быть в безопасности, вы также должны создать $ (REPO) .git / hooks / update, который отклоняет любые изменения чего-либо, кроме shared_branch, потому что вы не хотите, чтобы люди копались в ваших частных ветвях.
repo1/.git/hooks (GIT_DIR!)$ cat update
#!/bin/sh
refname="$1"
oldrev="$2"
newrev="$3"
if [ "${refname}" != "refs/heads/shared_branch" ]
then
echo "You can only push changes to shared_branch, you cannot push to ${refname}"
exit 1
fi
Теперь создайте локальную ветку в repo1, где вы будете выполнять свою реальную работу.
git checkout -b my_work --track shared_branch
Branch my_work set up to track local branch shared_branch.
Switched to a new branch 'my_work'
(может потребоваться git config --global push.default upstream
, чтобы git push
работал)
Теперь вы можете создать repo2 с помощью
git clone path/to/repo1 repo2
git checkout shared_branch
На этом этапе у вас есть настройки repo1 и repo2 для работы с локальными ветками, которые запускают и извлекают из shared_branch
в repo1, не беспокоясь об этом сообщении об ошибке или не синхронизируя рабочий каталог в repo1. Какой бы нормальный рабочий процесс вы ни использовали, он должен работать.