Есть ли способ получить коммиты в новое репо (на этот раз первая фиксация является файлом ЛИЦЕНЗИИ) и по-прежнему сохранять мета-информацию?
Да, добавив удаленный и вишневый сбор, совершает над вашей первой фиксацией.
# 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. Обновление и перебазироваться ваша локальная копия
Проверьте свой проект и поместите файл ЛИЦЕНЗИИ в фиксации на верхней части вашего тока 3 фиксации стека.
#create LICENSE file, edit, add content, save
git add LICENSE
git commit -m 'Initial commit'
Затем сделать интерактивную перебазироваться на мастер-ветви к переставить коммиты.
git rebase -i --root
Он откроет редактор. Переместите нижнюю строку (фиксация «Первичная фиксация», последняя фиксация) в верхней части файла. Затем сохраните и закройте редактор.
Как только вы выходите из редактора, git записывает коммиты в указанном вами порядке.
Теперь у вас обновлена локальная копия репозитория. do:
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
Всё. Теперь все должны быть синхронизированы.
Вы все еще можете добавить лицензию на исходное репо. Подробнее см. Https://help.github.com/articles/open-source-licensing/#how-can-i-go-back-through-my-public-repositories-and-give-them-licenses. – edwinksl
Возможный дубликат [git: Применить изменения, внесенные фиксацией в одном репо на другое репо] (http://stackoverflow.com/questions/3816040/git-apply-changes-introduced-by-commit-in-one-repo- к другому-репо) –