Mevcut bir klondan çatal olarak bir depo ekleyen Github


21

Bu yüzden ghithub üzerindeki yukarı akışlı bir kaynaktan klonladığım bir git deposuna sahibim. Bunun için birkaç değişiklik yaptım (kabul edilmemiş ve ana şubede). Yapmak istediğim değişikliklerimi yeni bir şube olarak github sayfamın üzerine itmek ve github'ın hala bir çatal olarak görmesini sağlamak.

Mümkün mü? Git ve github için oldukça yeniyim. Benim sorum bile mantıklı geldi mi?

Düşünebildiğim en kolay yol (ki en eminim ki en uzak yol budur), depoyu github'a yerleştirmektir. Yerel olarak farklı bir dizine klonlayın. Akış yukarı kökeni repo ekleyin. Bu yeni çatal deposunda bir dal oluşturun. Kod değişikliklerimi el ile yeni yerel depoya kopyala. Ve sonra onu tekrar github'uma it.

Bu, ortak bir kullanım örneği, dizinleri çoğaltmadan yapmanın daha basit bir yolu var mı?

Sanırım burada SO'ya karşı soruyorum çünkü git komutunu kullanarak linux kullanıyorum ve buradaki insanlar daha iyi cevaplar veriyorlar imo =]


Sanırım bu teknik olarak konuyla ilgili, ancak çoğunlukla başka bir konuda daha iyi olabilir, çünkü çoğunlukla github sorusu gibi görünüyor
Michael Mrozek

Yanıtlar:


22

Hepsini mevcut havuzunuzdan yapabilirsiniz (çatalı yeni (yerel) bir depoya klonlamanıza gerek yoktur, şubenizi oluşturun, taahhütlerinizi / değişikliklerinizi vb. Kopyalayın).

  1. Taahhütlerinizi yayınlamaya hazırlayın.

    Mevcut yerel taahhütleri düzeltin (örneğin git commit --amendve / veya ile git rebase --interactive).

    Yayınlamak istediğiniz kabul edilmemiş değişikliklerden herhangi birini taahhüt edin (Yerel yöneticinizde bazı taahhütler bulunduğunu ve bazı taahhüt edilmemiş değişikliklerin veya yalnızca bazı kabul edilmeyen değişikliklerin olduğunu ima etmek istediğinizden emin değilim ; bu arada, kabul edilmeyen değişiklikler " şube ”, kesinlikle çalışma ağacındalar.

    Ana şubenizi, “yeni şubeniz” için istediğiniz ismi vermek üzere yeniden adlandırın . Bu kesinlikle gerekli değildir (herhangi bir şubeden başka bir şubeye itebilirsiniz), ancak yerel şubeniz ve GitHub çatalınızdaki şubeniz aynı ada sahipse, uzun vadede karışıklığı azaltacaktır.

    git branch -m master my-feature
    
  2. Üst GitHub deposunu çatal
    (örneğin) github.com:UpstreamOwner/repostory_name.gitolarak
    (örneğin) github.com:YourUser/repository_name.git.

    Bu GitHub web sitesinde (veya GitHub API'lerini kullanan bir “istemci”) yapılır, ilgili yerel Git komutu yoktur.

  3. Yerel deponuzda (başlangıçta yukarı akış GitHub deposundan orijinal olarak klonlanan ve değişikliklerinizi master'ında bulunan ), çatal deponuzu uzaktan kumanda olarak ekleyin:

    git remote add -f github github.com:YourUser/repository_name.git
    
  4. Şubenizi GitHub'taki çatal deponuza itin.

    git push github my-feature
    
  5. İsteğe bağlı olarak, uzaktan kumandayı yeniden adlandırın, böylece çatalınız “başlangıç” ve yukarı akış “yukarı akış” olarak bilinir.

    git remote rename origin upstream
    git remote rename github origin
    

    Uzaktan kumandaları yeniden adlandırmanın bir nedeni, git pushbir havuz belirtmeden kullanabilmek istediğiniz olabilir (varsayılan olarak “orijinli” olur).


Kusursuzca çalıştı, ancak github uzaktan kumandasını yarattığınızda, Github URL'sinde "https: //" yi kaçırdığınızı düşünüyorum
jesjimher

1
@jesjimher: Bu gönderideki “URL'ler” , HTTP (S) yerine SSH kullanan “scp benzeri sözdizimini” kullanır. İki nokta üst üste işaretini, HTTP (S) URL’leri olarak kullanmak için bir eğik çizgiyle değiştirmeniz gerekecektir (sunucunun her ikisini de GitHub’ın yaptığı ek ad alanı değişikliği olmadan desteklediğini varsayalım).
Chris Johnsen,

Maalesef haklısın, Chris, kolonu eğik çizgi olarak yanlış yazmıştım ve bu yüzden "https" eklemeden çalışmadı. Gürültü için özür dilerim ...
jesjimher

4. Adımda, -useçeneğin kullanılması yerel şubenizin aynı uzak şubeyi my-feature izlemesini sağlayabilir origin/my-feature. Komut şudur:git push -u github my-feature
YaOzI

Bu harika. Değiştirmem gereken tek şey github adresiydi!
Tico,

0

Bir araç var: hub

hubgitGitHub ile çalışmayı kolaylaştıran ekstra özellik ve komutlarla genişletmek için tamamlanan bir komut satırı aracıdır.

Şimdi yapabilirsin:

# cd to a cloned repo with uncommited changes
git checkout -b feature
git commit -am 'done with feature'
git fork
git push YOUR_USER feature
# git pull-request
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.