2012-01-20 23 views
52

'dan kaldırmaya başladım Bir proje üzerinde çalışmaya başladım ve kökeni ana kaynağına ittiğim bazı istenmeyen işlemler yaptım. Şimdi, bir çekme talebi yapmaya çalıştığımda Github, önceki tüm taahhütleri yerine getirmek istiyor.Git İstenmeyen yüklemeleri bir Çekme İsteği

Sorum şu: İstenmeyen işlemleri nasıl kaldırabilirim ve gerçekleştirmeyi istediğim değişiklikleri nasıl gerçekleştiririm?

+0

"git rebase" konusuna bakın. Squash beraberce bir araya gelebilir ve bazı ödünçler bırakabilirsin. –

cevap

34

Kökeni, bir çekme talebi yapmak istediğiniz bir projenin kendi çatalınız olduğunu mu söylüyorsunuz? Geçmişi değiştireceğinizden (kafayı sıfırlayarak) - bayrak ile itmeniz gerekecektir. Son iyi işleminizin karma değerini git log kullanarak bulun.

Şimdi bu topl başını değiştirip bu son iyi işlemek beri dosyalarında değişiklikleri korur

git reset SHA 

Bu

çalıştırın İşaret da sıfırlanır.

Artık kodunuzu değiştirebilir ve istediğiniz ödevleri yapabilirsiniz. Ancak, deponun geçmişini değiştirdiğinizden git push --force yapmalısınız. Bu, deponuzu saran herkesin artık sizden değişiklik yapamayacağı anlamına gelir. Ancak yukarı akışınıza bir çekme talebi yapabilirsiniz.

+0

Birisi itme isteğimin dayandığı dalı sorarsa sadece bir problemi zorluyor mu? Ya da benim deposumdan hiç çatal çıkarırlarsa? Şikayetçi şubeyi sileceklerse, tekrar depomuzla senkronizasyon yapabilirler mi? Çekme isteğindeki zorlamaları, zorlamadan temiz bir şekilde temizlemenin bir yolu var mı? – endolith

+1

@endolith Yalnızca, şubenize bağlıyorlarsa. Daha sonra yeniden işlenen bir taahhüdün soyundan gelen herhangi bir taahhüt etkilenecek ve orijinal taahhüt artık mevcut olmadığından önemsiz bir şekilde birleştirilemez. Çekme isteğinizde kimsenin birleştirmediği veya üste bindiği sürece, kuvvetteki isteğinizi değiştirmek için özgürlüğünüzü iterek serbest bırakarak, şubenize zorlayarak itin. Çekme isteğinizde bunu aktif olarak değiştirdiğini açıkça belirtirseniz bu olmamalıdır. –

+0

Geri çekme isteğinin, şubenin değişmesi için açık olması gerekiyor –

0

Git gui, Goto git gui'yi kullanıyorsanız ve şube geçmişinizi görselleştirin. (bir sonraki adımı yapmadan önce, itmek istediğiniz yerel değişikliklerin bir yedeğini alın) Şubenin master'a sıfırlamak istediği noktaya sağ tıklayın ve sıfırla'ya tıklayın. Sıfırladıktan sonra, komut satırına git push-f yazın. Şimdi şubede gerekli değişiklikleri yapın ve tekrar basın. Şimdi bir çekme isteği oluşturursanız, yalnızca şube sıfırlama işleminden sonra yeni işleme sahip olacaktır.

İlgili konular