2016-05-26 42 views
14

Geçen hafta bir Github repo oluşturdum ve repo için bir lisans seçmeyi unuttum. Şimdi zaten 3 büyük taahhüt var.Bir Git repo'undan diğerine nasıl işlem yapılır?

Eğer tamamlanmışsa 3 katılımcıya, eğer repo'yu silersem ve tekrar aynı adla yeniden oluşturursam ve repo oluştururken bu süreyi seçtiğimde sordum.

Soru

Yeni repo içine kaydedilmesini almak zorunda bir yolu var (ilk taahhüt bu kez LİSANS dosyasıdır) ve hala meta bilgisini işlemek tutmak mı?

+1

Yine de orijinal repoya bir lisans ekleyebilirsiniz. Detaylar için https://help.github.com/articles/open-source-licensing/#how-can-i-go-back-through-my-public-repositories-and-give-them-licenses adresini ziyaret edin. – edwinksl

+0

Olası bir kopyası [git: Başka bir repoda bir repoda işlenerek yapılan değişiklikleri uygula] (http://stackoverflow.com/questions/3816040/git-apply-changes-introduced-by-commit-in-one-repo- için-bir-repo) –

cevap

26

İşlemleri yeni bir repo almamın bir yolu var (bu sefer ilk işlem LICENSE dosyasıdır) ve yine de meta meta bilgisini sürdürüyor mu?

Evet, ekleyerek uzak ve kiraz toplama işlemek ilk üstündeki kaydedilmesini. Eğer hala önceki repo LİSANSI eklemek istiyorsanız

# 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 

bu cevabın geri kalanı.

Evet. LICENSE taahhüdünü rebasing ile ilk taahhüt olarak yerleştirebilirsiniz.

Rebasing, tüm taahhüt yazarlarını ve taahhütlü tarihlerini koruyarak taahhüt sırasını yeniden düzenleme yoludur.

Paylaşılan bir repo üzerinde çalışırken, tüm ekibiniz git-akıcı olmadıkça genellikle önerilmez. Olmayanlar için, sadece havuzun yeni bir kopyasını klonlayabilirler.

LICENSE işleminizi ilk işlem olarak nasıl gerçekleştirirsiniz.

1. Update ve yerel kopyası projenizi

kontrol dışarı rebase ve geçerli 3 işlemek yığının üstüne bir taahhüt içinde LİSANS dosyasını yerleştirin.

#create LICENSE file, edit, add content, save 
git add LICENSE 
git commit -m 'Initial commit' 

Sonra yeniden düzenlemek kaydedilmesini için ana dal üzerinde interaktif rebase yapmak. Bir düzenleyici açılacaktır. Alt çizgiyi ("İlk taahhüt" işleminiz, en son taahhütünüz) dosyanın üstüne taşıyın. Ardından editörü kaydedin ve çıkın.

Düzenleyiciden çıktığınız anda, git, belirtilenleri belirttiğiniz sıraya göre yazacaktır.

Artık deponun yerel kopyanız güncellendi. yapın:

git log 

doğrulamak için.

2. Kuvvet github için itin zorlamak zorunda yeni repo devlet senin kopya güncellenmesini Şimdi

Github için itin.
git push -f origin master 

Bu

yeni konumuna ana dalı taşımak için GitHub söyleyecektir. Yalnızca nadiren böyle durumlarda, zorla yapılanları, herkesle birlikte çalışan değişikliklerin farkında olduğunu, ancak işbirlikçilerinizin kafasını karıştıracağını unutmayın.

3. senkronize işbirlikçileri

Son olarak github için, tüm ortak çalışanlar bu deposuna senkronize etmek gerekir. kaydedilmemiş değişiklikler varsa aşağıdaki komutu yıkıcı olabilir olarak

İlk temiz depoları olması gerekir.

Bu kadar. Herkes şimdi senkronize olmalı.

İlgili konular