Git: клонирование репозитория в новый репозиторий

Я использую Git (на bitbucket) и имею репозиторий с моим кодом. Теперь я хочу использовать этот код и в значительной степени изменить его для другого проекта. Я понимаю, что я должен абстрагировать общие компоненты в третью библиотеку и использовать ее, но для аргумента, если я хочу клонировать текущий репозиторий в новый, возможно ли это без ручного копирования кода и нажатия на новое РЕПО?

спасибо,

Али

3 ответов


сначала клонируйте репозиторий, с которым вы хотите работать. Этот шаг можно пропустить, если вы хотите, чтобы все это произошло в папке, в которой вы уже находитесь.

git clone file:///path/to/repo/

клонирование приведет к удалениям, указанным в этом каталоге. Так что вам нужно снимите пультов ты не хочешь.

git remote rm <remote>

и добавить те, что вы делаете, после того, как вы создали свой удаленный репозиторий.

git remote add origin <url>

вы также захотите --set-upstream-to, или -u чтобы сообщить git, что это удаленный репозиторий, в который будет обновляться эта ветка, предполагая, что вы находитесь в главной ветви.

git push -u origin master

затем вам нужно будет решить, какие ветви сохранить и добавить к удаленному. Если вы хотите подтолкнуть их всех, просто сделайте git push --mirror. Это подтолкнет все ваши теги и пульты. Но поскольку мы отредактировали ваши пульты на более раннем этапе, это не должно быть проблемой.

если вы только хотите сохранить несколько, вы можете git push -u origin <branch> каждый из вас хотеть.


вы можете либо клонировать существующее РЕПО и удалить пульты, либо скопировать папку в файловой системе и изменить/удалить пульты в одной копии.

но поскольку ваш вопрос не слишком ясен, вот еще одна вещь, которая возможна:

добавьте другой пульт к существующему удаленному (кроме origin) и нажмите на этот пульт.


вы можете просто использовать set-url чтобы переместить существующий репозиторий в новый репозиторий:

  1. cd file:///path/to/repo/
  2. git remote set-url origin <url-of-new-repo>
  3. git push -u origin master