Ответ 1
Есть ли способ получить коммиты в новое репо (на этот раз первая фиксация - файл LICENSE) и по-прежнему сохранять мета-информацию commit?
Да, добавив удаленный и вишневый сбор коммитов поверх первой фиксации.
# add the old repo as a remote repository
git remote add oldrepo https://github.com/path/to/oldrepo
# get the old repo commits
git remote update
# examine the whole tree
git log --all --oneline --graph --decorate --abbrev-commit
# copy (cherry-pick) the commits from the old repo into your new local one
git cherry-pick sha-of-commit-one
git cherry-pick sha-of-commit-two
git cherry-pick sha-of-commit-three
# check your local repo is correct
git log
# send your new tree (repo state) to github
git push origin master
# remove the now-unneeded reference to oldrepo
git remote remove oldrepo
Остальная часть этого ответа заключается в том, что вы все еще хотите добавить ЛИЦЕНЗИЮ к вашему предыдущему репо.
Да. Вы можете поместить свой LICENSE в качестве первого фиксации путем перезагрузки.
Rebasing - это способ переупорядочения порядка фиксации, сохраняя при этом все авторы фиксации и даты фиксации.
При работе с общим репо обычно не рекомендуется, если вся ваша команда git -fluent. Для тех, кто этого не делает, они могут просто клонировать новую копию репозитория.
Вот как вы получаете фиксацию LICENSE в качестве первой фиксации.
1. Обновите и обновите локальную копию
Проверьте свой проект и поместите файл LICENSE в фиксацию ON TOP вашего текущего 3 файла фиксации.
#create LICENSE file, edit, add content, save
git add LICENSE
git commit -m 'Initial commit'
Затем сделайте интерактивную переадресацию на главной ветке до REARRANGE.
git rebase -i --root
Он откроет редактор. Переместите нижнюю строку (фиксация "Первичная фиксация", последняя фиксация) в верхней части файла. Затем сохраните и закройте редактор.
Как только вы выйдете из редактора, git будет писать коммиты в указанном вами порядке.
Теперь у вас обновлена локальная копия репозитория. сделать:
git log
чтобы проверить.
2. Принудительное нажатие вашего нового состояния репо на github
Теперь, когда ваша копия обновлена, вам нужно принудительно нажать ее на github.
git push -f origin master
Это позволит github переместить главную ветку в новое место. Вы должны только нажимать в таких редких случаях, когда все, кто работает с ним, знают о предстоящих изменениях, иначе это путает ваших соавторов.
3. Синхронизация соавторов с github
Наконец, всем сотрудникам придется синхронизировать с этим репозиторием.
Сначала они должны иметь чистые репозитории, поскольку следующая команда может быть разрушительной, если есть несохраненные изменения.
# make sure there are no unsaved changes
git status
# pull the latest version from github
git fetch
# move their master branch pointer to the one you published to github.
git reset --hard origin/master
Что это. Теперь все должны синхронизироваться.