Eğer yayınladıysanız, master
'un tarihini tekrar yazmak istemediğinizi haklısınız. İstediğin şey, geçmişini D
olduğu duruma geri getirerek ana geçmişini geri getirerek, diğer kullanıcıların işlerini kolayca birleştirebilmeleri veya yeniden ispat edebilmelerini sağlamak için bir taahhüt yayınlamaktır.
o zaman muhtemelen de sonradan topic
birleştirme zaman, sen 'yok, böylece master
ve topic
arasında yeni bir ortak üs yapmak olduğunu ne yapmak istediğinizi master
içine topic
birleştirmek için gelecekte bir noktada planlıyorsanız master
'da geri gönderilen işlemleri kaybetmeyin. Bunu yapmanın en kolay yolu, 'geri alma' taahhüdünün üstesinden gelmek ve master
'u orijinal durumuna döndürmek ve bunun üzerine yeni topic
şubesini temel almaktır. Eğer yapmış bir alternatif olarak
# checkout master branch (currently at G)
git checkout master
# Reset the index to how we want master to look like
git reset D
# Move the branch pointer back to where it should be, leaving the index
# looking like D
git reset --soft [email protected]{1}
# Make a commit (D') for the head of the master branch
git commit -m "Temporarily revert E, F and G"
# Create the new topic branch based on master.
# We're going to make it on top of master and the 'undo'
# commit to ensure that subsequent merges of master->topic
# or topic->master don't merge in the undo.
git checkout -b topic
# Revert the undo commit, making a redo commit (G').
git revert HEAD
E 'F' taahhüt ve G 'Her bölümü ayrı ayrı yineleme ama E, F ve G yayımlanmış tarihinin zaten olduğu gibi sadece referans eğer muhtemelen daha anlaşılabilir' taahhüdünü geri al ve bu işlemin geri alındığını söyle. Bu zaten
git revert
'un yaptığı şeydir.
Esasen bildiğiniz şey budur.
D -- E -- F -- G -- D' <-- master
\
\
G' <-- topic
önemli şeylerden
Eğer tarihi yeniden değil ve birleştirmeleri yanlışlıkla herhangi bir 'geri al' geçerli olmayacaktır böylece konu usta dayandığını vardır taahhüt eder. Artık güvenli bir şekilde uzak deponuza
master
ve
topic
'u da itebilirsiniz. Ben
git stash
bulmak
Teşekkürler, bu tam olarak benim yaptığım şeydi (Jefromi'nin bazı yorumlarında da önerdim). Tarih, bu başarısızlıktan dolayı biraz çirkin ama bu konuda hiçbir şey yapamam. – Albert
2 hafta git kullanıcı burada. Önce G'den G'ye dalmak daha kolay olmaz mı? Bu şekilde, herhangi bir şeyi geri almanıza/tekrar etmenize gerek yok, ki bu da bana daha güvenli geliyor. (Zaten git reset ile uğraşmaktan dolayı düzeltilemez şekilde düzenlemelerimi kaybettim.) – bart
@bart, 'git reflog''a bir göz atın. Taahhüt edilen ve sonradan vidalanan şeyler her zaman en azından birkaç günlüğüne reflogdan kurtarılabilir. Bununla birlikte, gerçekleştiremediğiniz değişiklikleri geri dönüşü olmayan bir şekilde kaybedebilirsiniz. – dubiousjim