2016-05-26 9 views
14

W zeszłym tygodniu stworzyłem repozytorium Github i zapomniałem wybrać licencję na repo. Teraz są już 3 duże zatwierdzenia.Jak skopiować zatwierdzenia z jednego repozytorium Git na drugie?

Poprosiłem 3 współtwórców, jeśli wszystko jest w porządku, jeśli usunę repozytorium, a następnie utworzę je ponownie z tą samą nazwą i tym razem wybierając licencję podczas tworzenia repo, a oni będą w porządku, co to.

Pytanie

Czy istnieje sposób mam uzyskać zobowiązuje do nowego repo (tym razem najpierw popełnić jest plik licencji) i nadal zachować popełnić meta informacji?

+1

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

+0

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) –

Odpowiedz

26

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.

Powiązane problemy