Sık kullandığım şey bu:
git fetch upstream develop;
git reset --hard upstream/develop;
git clean -d --force;
Herhangi değişiklik için başka bir dal yerine çıkış / yerel ana değişiklik yapmak ayağının geliştirilmesini, bunlarla değil iyi bir uygulama örneğin değişiklik türüne, tarafından önüne şube adı ile olduğunu Not feat/
, chore/
, fix/
, vb Böylece sadece gerek değişiklikleri çekin, master'dan herhangi bir değişiklik yapmayın. Diğerlerinin katkıda bulunduğu diğer dallar için de aynı şey geçerlidir. Bu nedenle, yukarıdakiler yalnızca, başkalarının taahhüt ettiği bir şubeye değişiklik yaptıysanız ve sıfırlamanız gerektiğinde kullanılmalıdır. Aksi takdirde, gelecekte başkalarının ittiği bir şubeye itmekten kaçının, bunun yerine ödeme yapın ve teslim alınan şube aracılığıyla söz konusu şubeye itin.
Yerel şubenizi akış yukarı şubedeki en son işleme sıfırlamak istiyorsanız, şu ana kadar benim için işe yarar:
Uzaktan kumandalarınızı kontrol edin, yukarı akış ve orijininizin beklediğiniz gibi olduğundan emin olun, beklendiği gibi değilse git remote add upstream <insert URL>
, örneğin çatalladığınız orijinal GitHub deposunu ve / veya kullanın git remote add origin <insert URL of the forked GitHub repo>
.
git remote --verbose
git checkout develop;
git commit -m "Saving work.";
git branch saved-work;
git fetch upstream develop;
git reset --hard upstream/develop;
git clean -d --force
GitHub'da, işi orada kaydetmek için şubeye yerel adla aynı ada sahip olarak ödeme yapabilirsiniz, ancak başlangıç noktası geliştirmenin yerel kaydedilmiş çalışma dalıyla aynı değişikliklere sahip olması durumunda bu gerekli değildir. Ben örnek olarak geliştirme dalı kullanıyorum, ancak mevcut herhangi bir şube adı olabilir.
git add .
git commit -m "Reset to upstream/develop"
git push --force origin develop
Ardından, bu değişiklikleri herhangi bir çakışma olduğunda başka bir dalla birleştirmeniz gerekiyorsa, değişiklikleri geliştirirken koruyun:
git merge -s recursive -X theirs develop
Kullanım sırasında
git merge -s recursive -X ours develop
şube_adı'nın çakışan değişikliklerini korumak için. Aksi takdirde ile bir birleştirme aracı kullanın git mergetool
.
Tüm değişikliklerle birlikte:
git commit -m "Saving work.";
git branch saved-work;
git checkout develop;
git fetch upstream develop;
git reset --hard upstream/develop;
git clean -d --force;
git add .;
git commit -m "Reset to upstream/develop";
git push --force origin develop;
git checkout branch_name;
git merge develop;
Akış yukarı / geliştirme yerine, bir sağlama karması, diğer şube adı vb. Kullanabileceğinizi unutmayın. Şubenizin yeşil olup olmadığını ve çalışma dizininin temiz olduğunu (çalışma dizininin temiz olduğunu belirten) kontrol etmek için Oh My Zsh gibi bir CLI aracı kullanın. tarafından onaylanmış veya doğrulanabilir git status
). Bu aslında çok bu durumda, bir taahhüt tarafından otomatik örn UML diyagramları, lisans başlıkları, vb eklenen bir şey varsa geliştirmek akıntıya göre kaydedilmesini ekleyebilecekleri Not, daha sonra üzerinde değişiklikler çekebilirdi origin develop
için upstream develop
gerekirse.
git status
İkinci komutunuzun çıktısına göregit reset --hard HEAD
başarısız oldu. Yine de çıktısını yapıştırmadın. → Eksik soru.