Czy istnieje sposób, żebym mógł umieścić zatwierdzenia w nowym repozytorium (tym razem pierwszym zatwierdzeniem jest plik LICENCJA) i nadal zachować metadane dotyczące zmian?
Tak, dodając zdalne zatwierdzenie i wybierając najlepsze zmiany w pierwszej kolejności.
# 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
# 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
Pozostała część odpowiedzi dotyczy sytuacji, gdy nadal chcesz dodać LICENCJĘ do swojego poprzedniego repozytorium.
Tak. Możesz umieścić swoje zatwierdzenie LICENCJI jako pierwsze zatwierdzenie, zmieniając bazę.
Rebasing to gits sposób na przestawienie kolejności zatwierdzeń, przy jednoczesnym zachowaniu wszystkich autorów i dat zatwierdzeń w stanie nienaruszonym.
Podczas pracy nad udostępnionym repozytorium generalnie odradza się, chyba że cały zespół jest biegły git. W przypadku tych, które nie są, mogą po prostu sklonować nową kopię repozytorium.
Oto, jak uzyskać zatwierdzenie LICENCJI jako pierwsze zatwierdzenie.
1. Zaktualizuj i przebuduj swoją kopię lokalną
Sprawdź swój projekt i umieść plik LICENCJA w zatwierdzeniu NA GÓRZE aktualnego stosu 3 zatwierdzeń.
#create LICENSE file, edit, add content, save
git add LICENSE
git commit -m 'Initial commit'
Następnie wykonaj interaktywną rebase na gałęzi głównej, aby ZMIENIĆ PRZEJŚCIA .
git rebase -i --root
Otworzy się edytor. Przenieś dolną linię (twoje zatwierdzenie początkowe, ostatnie zatwierdzenie) na górę pliku. Następnie zapisz i zamknij edytor.
Jak tylko wyjdziesz z edytora, git zapisze zmiany w podanej właśnie kolejności.
Masz teraz zaktualizowaną lokalną kopię repozytorium. zrobić:
git log
do weryfikacji.
2. Wymuś wypchnięcie nowego stanu repozytorium na github
Teraz, gdy twoja kopia jest zaktualizowana, musisz wymusić wypchnięcie jej na github.
git push -f origin master
To powie githubowi, aby przenieść gałąź główną do nowej lokalizacji. Powinieneś wymusić nacisk tylko w rzadkich przypadkach, takich jak ta, gdy wszyscy pracujący z nim są świadomi nadchodzącej zmiany, w przeciwnym razie zmyli to twoich współpracowników.
3. Zsynchronizuj współpracowników z github
Na koniec wszyscy współpracownicy będą musieli zsynchronizować się z tym repozytorium.
Najpierw muszą mieć czyste repozytoria, ponieważ następujące 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
Otóż to. Wszyscy powinni być teraz zsynchronizowani.