Как зафиксировать существующие изменения после установки нового удаленного репозитория? - PullRequest
1 голос
/ 13 октября 2019

Я новичок в Git и недавно унаследовал нефункциональный проект, у которого был доступ к локальной производственной версии кода. Я внес изменения в локальную проверенную ветку, чтобы она снова заработала. Я не смог зафиксировать эти изменения, потому что удаленный репозиторий GitHub был закрытым, поэтому я создал новый репозиторий и попытался зарегистрировать код в новом репозитории, надеясь сохранить историю проекта. Вот кое-что из того, что я пробовал:

git remote set-url origin https://github.com/newrepo.git
git commit -m "initial commit to new github repo"
git push -u origin --all
git push --prune https://github.com/newrepo.git +refs/remotes/origin/*:refs/heads/* +refs/tags/*:refs/tags/*
git push --mirror https://github.com/newrepo.git

Ничего из этого не сработало - я получил только readme в новом хранилище, возможно, потому что у меня не было доступа для чтения к оригиналу? Я не уверен.

С тех пор я получил доступ к исходному частному репозиторию и клонировал его в новое чистое репозиторий, чтобы я мог поддерживать историю проекта. Я хотел бы проверить с локальной копией кода (с изменениями), чтобы все поймано. Какой лучший способ сделать это?

Когда я делаю git status, он больше не показывает предыдущий список измененных файлов (из-за коммита, который я принимаю). Должен ли я сделать git commit -a затем нажать? Я просто не уверен.

Ответы [ 2 ]

2 голосов
/ 13 октября 2019

Я получил только readme в новом репозитории

Когда вы создаете новый репозиторий, обязательно создайте его empty .

Но в вашем случае, поскольку он был создан с помощью одного коммита, принудительно нажмите.

git push --force -u origin master
git push --all

Я хотел бы проверить с локальной копией кода (с изменениями), чтобы все поймано

Выможно установить папку worktree для вашего старого клона только для импорта изменений, используя параметр --work-tree :

cd /path/to/local/clone
git --work-tree=/path/to/local/copy/with/changes add .
git commit -m "Integrate changes"
1 голос
/ 13 октября 2019

Мое понимание:

  • У вас есть рабочая версия копии исходного репо на вашем компьютере, но удаленное репо для папки не очень хорошо (назовем это RepoB)
  • Теперь у вас есть доступ на запись к исходному репо (RepoA)

Я предлагаю 3 варианта рассмотрения (среди многих других возможных):

  • OptionB. Исправьте RepoB и создайте запрос на получение RepoA
  • OptionC. Забудьте RepoB, создайте RepoC из своих локальных изменений, отправьте изменения и создайте запрос на извлечение из RepoC в RepoA
  • OptionA. Забудьте RepoB, перенесите локальные изменения в RepoA.

Для вашего случая я предлагаю C, поскольку это должно быть очень просто, а то, что произошло, RepoB не имеет значения.

Опция C

  1. cd path/to/repoA
  2. git checkout -b theBestBranchNameEver - создать новую ветку в RepoA .
  3. КопироватьRepoB без папки .git на RepoA.
  4. Теперь repoA содержит изменения, которые вы внесли локально. Вы можете следовать обычному потоку мерзавцев за фиксацию и отправку изменений.
  5. git add --all
  6. git commit -am "Commit message here"
  7. git push

Теперь RepoAсодержит ветку с вашими локальными изменениями в виде одного коммита. Теперь вы можете объединить свои изменения в общую ветку (что-то вроде develop или master).

Ни в коем случае вам не нужны никакие принудительные или расширенные команды git.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...