GitHub'dan bir depoyu klonlamak istiyorum. Sorun şu ki, ana şubeyi istemiyorum; Bu onaylanmamış çekme isteğindeki sürümü istiyorum .
Ana depo yerine çekme isteği sürümünü klonlamam mümkün mü?
GitHub'dan bir depoyu klonlamak istiyorum. Sorun şu ki, ana şubeyi istemiyorum; Bu onaylanmamış çekme isteğindeki sürümü istiyorum .
Ana depo yerine çekme isteği sürümünü klonlamam mümkün mü?
Yanıtlar:
-b
Seçeneği kullanarak ve çekme isteği için istediğiniz dalı klonlayabilirsiniz :
git clone https://github.com/user_name/repo_name.git -b feature/pull_request_name dir_name
Sizin durumunuzda, klonlamak istediğiniz dal, çekme isteğinin ( feature/mongoose-support
) kaynak dalıdır :
git clone https://github.com/berstend/frappe.git -b feature/mongoose-support ./mongoose-support
Bunu yapmanın en kolay yolu şudur:
git fetch origin pull/2/head
git checkout -b pullrequest FETCH_HEAD
Şimdi, çekme isteği durumunda olan yeni bir şubede olacaksınız.
Çalıştırarak bir takma ad ayarlamak isteyebilirsiniz
git config --global alias.pro '!f() { git fetch -fu ${2:-origin} refs/pull/$1/head:pr/$1 && git checkout pr/$1; }; f'
Artık herhangi bir PR'yi çalıştırarak git pr <pr_number>
veya git pr <pr_number> <remote>
github uzaktan kumandanız adlandırılmamışsa kontrol edebilirsiniz origin
.
.gitconfig
altında dosyaya [alias]
: pr = "!f() { git fetch $1 pull/$2/head:pull_$2; git co pull_$2; }; f"
. Bu şekilde sadece yazıyorum git pr upstream 62
ve bildiğim bir sonraki şey, yukarı akıştan yeni bir PR # 62 şubesindeyim! Her zaman kullanırsanız origin
, yerine kod yazabilirsiniz $1
, ancak bu benim için değişir.
co
git fetch origin refs/pull/PR_NUMBER/head:NEW_LOCAL_BRANCH
Örneğin:
$ git fetch origin pull/611/head:pull_611
$ git checkout pull_611
Değişiklikler yapın, uygulayın, PUSH yapın ve GitHub'daki çatalınızdan yeni PR açın
Depolarını ve şubelerini anlamaya gerek kalmadan uzaktan kumandayı doğrudan kontrol edebilmek için bu özetteki talimatları takip edebilirsiniz.
Örnek kullanım
Projelerimden biri için (github3.py) aşağıdakiler var: github3.py/.git/config
[remote "github"]
fetch = +refs/heads/*:refs/remotes/github/*
fetch = +refs/pull/*/head:refs/remotes/github/pr/*
url = git@github.com:sigmavirus24/github3.py
İlk satır, github
uzaktan kumandanın adıyla değiştirilen istisna dışında her uzaktan kumanda için standart olan şeydir . Bunun anlamı, uzak kafaların (veya o sunucudaki dalların başlarının) ön eki ile yerel uzaktan kumandalara "eşleştirilmesidir" github/
. Ben yaptıysa git fetch github
ve zaten benim makinede lokal olarak fark değildi GitHub üzerinde bir şube vardı, şube indirmek istiyorum ve ben şöyle kendisine geçiş olabilir: git checkout -t github/branch_name
.
İkinci satır da aynı şeyi yapar, ancak bunu standart git dalları yerine çekme istekleri için yapar. Bu yüzden görüyorsun refs/pull/*/head
. GitHub'daki her bir çekme isteğinin başını getirir ve onu ile eşler github/pr/#
. Öyleyse birisi bir çekme isteği gönderirse ve numara 62 ise (örneğin), yaparsınız:
git fetch github
git checkout -t github/pr/62
Ve sonra adında yerel bir şubede olurdunuz pr/62
(zaten mevcut olmadığını varsayarak). Bu güzel ve diğer insanların uzaktan kumandalarını veya şubelerini takip etmek zorunda olmadığınız anlamına gelir.
git clone https://github.com/berstend/frappe.git -b feature/mongoose-support /my_clone
belgeden " alamamaktan " asla anlamazdım.
git fetch github
o zaman yapabilirsin git co -t github/pr/#
. Bu, uzak URL'yi kopyalayıp yapıştırma, şube adını bulma vb. Zorunda kalmanızı önler. Daha sonra ekstra güçlük çekmeden iyi adlandırılmış, kısa ve doğru şube adlarını alırsınız. Ama bunun ezici görünebileceğini anlıyorum.
git clone git://github.com/dweldon/frappe
cd frappe
git pull origin pull/2/head
Sahibi olmadığım bir şube için birleştirilmemiş bir çekme talebini nasıl getirebilirim?
git pull
, geçerli dalda bir birleştirme oluşturur; genellikle bir PR için sadece git fetch
orijinal yazarın kodunu almak istersiniz (daha sonra FETCH_HEAD olarak erişilebilir). Bir birleştirme istiyorsanız, bundan bahsetmeye değer pull/2/merge
(yerine pull/2/head
) - bu, GitHub'ın size şimdi [Birleştir] düğmesine tıklarsanız gerçekleşecek tam birleştirme işlemini vermesini sağlar.
Bir kullanıcı bir çekme isteği gönderdiğinde, bazı değişikliklerin bir çatal klonundaki bir daldan başka bir kullanıcının deposuna birleştirilmesini ister.
İstediğiniz değişiklikler, çekme talebinin kaynağından alınabilir. Bunu yapmak için, kullanıcının deposunu ( git://github.com/berstend/frappe.git
) klonlayın ve sonra ( feature/mongoose-support
) dan çekme isteğini oluşturduğu dalı teslim alın .
Git ekstralarını yükledikten sonra
(cd /tmp && git clone --depth 1 https://github.com/tj/git-extras.git && cd git-extras && sudo make install)
Sadece kullanabilirsin git pr
$ git pr 62 [remote]
Github'ın resmi yeni komut satırı arayüzü ile :
gh repo clone org/repo
cd repo
gh pr checkout 44
44
PR numarası nerede , ancak şube adı da olabilir.
Ek ayrıntılara, seçeneklere ve kurulum talimatlarına bakın .
clone
amafetch
görmek için: stackoverflow.com/questions/6743514/…