Nasıl master/kökenli müstakil KAFA uzlaştırmak miyim?
Git dallanma karmaşıklığı yeniyim. Ben her zaman tek bir dal üzerinde çalışmak ve değişiklikleri uygulamak ve düzenli olarak uzak, benim kökeni itin.
Bir yerlerde son zamanlarda, bazı dosyaların bir reset hazırlama tamamlama çıkmak için yaptım, ve daha sonra bir rebase -i
bir çift son yerel tamamlar kurtulmak için yaptı. Şimdi anlayamadığım bir durumdayım.
Çalışma alanım tam olarak ne beklediğiniz gösterir gitmiş istemedim tamamlar ve yeni olanlar var, vs ile doğru iz üstündeyim.
Ama ben sadece uzaktan depoyu itti, ve var olan bir kaç değişik. ne rebase itildi şehit olurum taahhüt ve yenilerini yerel olarak kararlı değil.
"KAFASI kopuk, ama komut satırı araçları ile görselleştirmek için nasıl, ve nasıl düzeltebilirim. 100% bu ne demek, anlamış değilim "master/kökeni bence
CEVAP
İlk olarak, müstakil olduğunda ne anlama geldiğini KAFASI olduğunu açıklamaya bakalım.
KAFASI işlemek dışında şu anda kontrol için sembolik ismi. KAFASI kopuk değilken (“normal”1durum: şube teslim), BAŞ aslında bir şube “” ve şube noktaları işlemek için. hakeme puan KAFASININ içinde böyle bir şube. bir bağlı. Yeni bir taahhüt yaptığınızda, işaret KAFASI bu şube yeni işlemeye noktası için güncellendi. KAFA sadece bu şube için puan beri otomatik olarak takip eder.
git symbolic-ref HEAD
refs/heads/master
verir
Dalı “master” olarak denetlenir. adlıgit rev-parse refs/heads/master
verim17a02998078923f2d62811326d130de991d1a95a
Ya da “” ana dalın. başıyla ucu taahhütgit rev-parse HEAD
17a02998078923f2d62811326d130de991d1a95a
verir
Bu bir olmanın ne anlama geldiğini “sembolik ref”. Başka bir referans ile bir nesneyi işaret ediyor.
(Sembolik hakem aslında sembolik bağlantılar olarak uygulanan, ama daha sonra sembolik olmayan platformlarda kullanılabilir, böylece ekstra yorumu ile düz dosyalar değiştirildi.)
13* → refs/heads/master
→ 17a02998078923f2d62811326d130de991d1a95a
*var
KAFASI kopuk olduğunda, doğrudan veya dolaylı olarak bir şube ile bir işaret tamamlama yerine bir işaret. Adı açıklanmayan bir şube olarak ayrılmış bir KAFA düşünebilirsiniz.
git symbolic-ref HEAD
fatal: ref HEAD is not a symbolic ref
ile başarısız olurgit rev-parse HEAD
17a02998078923f2d62811326d130de991d1a95a
verir
Sembolik bir hakem olmadığı için, doğrudan adamaya noktası olmalı.
* → 17a02998078923f2d62811326d130de991d1a95a
*20 var
Önemli olan hatırlamak ile bir müstakil BAŞI eğer commit işaret etmektir aksi halde başvurulmayan (başka ref ulaşabilir BT), sonra dönecek “sarkan” ne zaman ödeme başka bir taahhüt. Sonunda, bu sarkan işleyen çöp toplama işlemi (varsayılan olarak, en az 2 hafta boyunca tutulur ve daha uzun KAFASI reflog tarafından başvurulan tarafından tutulması) ile budanmış olacak.
1 Gayet iyi “müstakil bir KAFA ile balık reflog dışında tarih bırakılan zorunda kalmamak için ne yaptığını izlemek için.” normal yapmak çok önemlidir
İnteraktif rebase Ara adımları müstakil bir KAFA (kısmen aktif şubenin reflog kirletici önlemek için) ile yapılır. Eğer tam rebase işlemi tamamlamak rebase işlemi toplu sonuç ile orijinal şube güncelleme ve özgün Şube BAŞKANI yeniden bağlayın. Benim tahminim asla tam rebase işlemi tamamlandı, bu en son rebase işlemi tarafından işlendiği müstakil bir KAFA işlemeye işaret bırakacaktır.
Durumu kurtarmak için, müstakil kafana göre şu anda işaret tamamlama işaret eden bir şube oluşturmak gerekir:
git branch temp
git checkout temp
Bu temp
yeni şube için BAŞINI bağlayın.
Sonra, üzerinde çalışmak için beklenen normal şube ile (ve tarihi) mevcut taahhüt karşılaştırmak gerekir:
git log --graph --decorate --pretty=oneline --abbrev-commit master origin/master temp
git diff master temp
git diff origin/master temp
(Muhtemelen günlük seçenekler ile deneme yapmak isteyeceksiniz: -p
bırakın --pretty=…
bütün günlük mesaj vb. görmek ekleyin)
Eğer temp
yeni şube iyi görünüyorsa (örneğin) master
üzerine güncellemek isteyebilirsiniz:
git branch -f master temp
git checkout master
git checkout -B master temp
olarak yazılabilir.)
Sonra geçici şube silebilirsiniz:
git branch -d temp
Son olarak, muhtemelen yeniden tarih itmek isteyeceksiniz:
git push origin master
Sana çok ihtiyacımız kullanın. --force
bas eğer uzak bir şube olamaz “fast-forward” yeni tamamlama (yani düşürdün, ya da yeniden yazdı varolan bazı işlemek, ya da aksi takdirde yeniden bazı bit tarihi).
Eğer rebase bir işlemin ortasında olsaydı muhtemelen onu temizlemek gerekir. Bir rebase işlemi olup dizin .git/rebase-merge/
bakarak kontrol edebilirsiniz. El ile sadece dizin (eğer artık aktif rebase operasyonun amacı ve bağlamı hatırlar gibi) silerek devam eden rebase temizleyebilirsin. Genellikle kullanırsınız git rebase --abort
ama bu fazladan sıfırlama, muhtemelen önlemek istiyorsanız (hareket BAŞ, özgün şube ve sıfırlar geri orijinal taahhüt edecek geri bazı çalışmaları yaptık yukarıda).
Nasıl Jenkins gıt tetik CI iter üzerin...
Nasıl bir yönlendirme sayfası jQuery k...
Nasıl bir dize başka bir dize içeriyor...
Nasıl Git deposu için boş bir dizin ek...
Nasıl dosyaları zaman uyumsuz olarak y...