Czy istnieje sposób, w jaki dostaję commits do nowego repo (tym razem pierwsze zatwierdzenie jest plikiem LICENCJI) i nadal zachowuję meta informację commit?
Tak, przez dodanie pilota i wybór wiśni, które znajdują się na górze pierwszego zatwierdzenia.
# 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
Reszta tej odpowiedzi jest, jeśli nadal chcesz dodać licencję na poprzedniej repo.
Tak. Możesz dokonać zatwierdzenia LICENCJI jako pierwszego zatwierdzenia przez ponowne przesłanie.
Rebasing to sposób na zmianę kolejności zatwierdzania, przy jednoczesnym zachowaniu wszystkich autorów zatwierdzeń i zatwierdzania dat nienaruszonych.
Pracując na wspólnym repo, generalnie się odradza, chyba że cały zespół jest git-fluent. Dla tych, którzy nie są, mogą po prostu sklonować nową kopię repozytorium.
Oto, jak uzyskać zatwierdzenie LICENCJI jako pierwsze zatwierdzenie.
1. Aktualizacja i rebase lokalna kopia
Sprawdź swój projekt i umieścić plik licencji w commit na górze prąd 3 popełnienia stosie.
#create LICENSE file, edit, add content, save
git add LICENSE
git commit -m 'Initial commit'
Następnie zrobić interaktywną rebase na gałęzi głównej do przestawiać się zmian są.
git rebase -i --root
Otworzy się edytor. Przenieś dolną linię (zatwierdzenie "Zatwierdzenie początkowe", ostatnie zatwierdzenie) na górę pliku. Następnie zapisz i wyjdź z edytora.
Zaraz po wyjściu z edytora, git napisze zatwierdzenia w podanej przez ciebie kolejności.
Zaktualizowana jest lokalna kopia repozytorium. do:
git log
do weryfikacji.
2. Siła pchania nowy stan repo do GitHub
teraz, że kopia jest aktualizowana, trzeba zmusić go do pchania github.
git push -f origin master
Poinformuje github, aby przenieść gałąź master do nowej lokalizacji. Powinieneś siłą naciskać tylko w takich rzadkich sytuacjach, w których wszyscy pracujący z nim są świadomi nadchodzących zmian, w przeciwnym razie zmyli współpracowników.
3. Synchronizacja współpracownicy do GitHub
Wreszcie wszyscy współpracownicy będą musieli synchronizować do tego repozytorium.
Po pierwsze muszą mieć czyste repozytorium, ponieważ poniższe polecenie może być destrukcyjne, jeśli istnieją niezapisane zmiany.
# 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
To wszystko. Wszyscy powinni teraz być zsynchronizowani.
Nadal można dodać licencję do oryginalnego repo. Szczegółowe informacje można znaleźć na stronie https://help.github.com/articles/open-source-licensing/#how-can-i-back-th-through-my-public-repositories-and-give-them-licenses. – edwinksl
Prawdopodobny duplikat [git: Zastosuj zmiany wprowadzone przez commit w jednym repo na inne repo] (http://stackoverflow.com/questions/3816040/git-apply-changes-infroduced-by-commit-in-one-repo- to-another-repo) –