SORU
6 Kasım 2010, CUMARTESİ


Bir önceki Gıt dönmek taahhüt

Nasıl bir anlık belirli bir kayıt üzerinde yapılan benim şu anki durumundan dönmek?

Eğer git log yaparsam aşağıdaki çıktıyı alıyorum:

$ git log
commit a867b4af366350be2e7c21b8de9cc6504678a61b`
Author: Me <me@me.com>
Date:   Thu Nov 4 18:59:41 2010 -0400

blah blah blah...

commit 25eee4caef46ae64aa08e8ab3f988bc917ee1ce4
Author: Me <me@me.com>
Date:   Thu Nov 4 05:13:39 2010 -0400

more blah blah blah...

commit 0766c053c0ea2035e90f504928f8df3c9363b8bd
Author: Me <me@me.com>
Date:   Thu Nov 4 00:55:06 2010 -0400

And yet more blah blah...

commit 0d1d7fc32e5a947fbd92ee598033d85bfc445a50
Author: Me <me@me.com>
Date:   Wed Nov 3 23:56:08 2010 -0400

Yep, more blah blah.

Nasıl 3, yani 0d1d7fc tamamlama Kasım işlemek için döner?

CEVAP
6 Kasım 2010, CUMARTESİ


Bu ne anlama geldiğini çok bağlıdır "". döner

Geçici olarak farklı bir taahhüt geçin

Eğer geçici olarak geri dön, etrafında aptal, geri nerede o gelip istiyorsanız, yapmanız gereken tüm kontrol istenen tamamlama:

# This will detach your HEAD, that is, leave you with no branch checked out:
git checkout 0d1d7fc32

Ya eğer oradayken taahhüt yapmak istiyorsanız, devam edin ve bunu yaparken de yeni bir şube yapmak:

git checkout -b old-state 0d1d7fc32

Geri yerine git, sadece yine sen şube kontrol edin.

Zor silmek yayınlanmamış tamamlar

Diğer taraftan, gerçekten o zamandan beri yaptığın her şeyi kurtulmak istiyorsanız, iki olasılık var. Eğer yaparsa, Sıfırla bu sadece herhangi bir yayınlanan sığınak değil,:

# This will destroy any local modifications.
# Don't do it if you have uncommitted work you want to keep.
git reset --hard 0d1d7fc32

# Alternatively, if there's work to keep:
git stash
git reset --hard 0d1d7fc32
git stash pop
# This saves the modifications, then reapplies that patch after resetting.
# You could get merge conflicts, if you've modified things which were
# changed since the commit you reset to.

Eğer hata yaparsanız, zaten yerel değişiklikler attınız, ama en azından daha önce olduğu yere tekrar sıfırlanıyor alabilirsiniz.

Geri Al yayınlanan yeni taahhüt eder

Eğer yayınlanan iş varsa, diğer taraftan, muhtemelen etkili bir şekilde tarihi yeniden yazmak yana şube sıfırlamak istiyor, yok. Bu durumda, gerçekten işleyen döner. Git, dönmek çok belirli bir anlamı vardır: onu yok etmek için ters yama ile oluşturmak için bir taahhüt. Bu şekilde herhangi bir tarihi yeniden yazmak istemiyorum.

# This will create three separate revert commits:
git revert a867b4af 25eee4ca 0766c053

# It also takes ranges. This will revert the last two commits:
git revert HEAD~2..HEAD

# Reverting a merge commit
git revert -m 1 <merge_commit_sha>

# To get just one, you could use `rebase -i` to squash them afterwards
# Or, you could do it manually (be sure to do this at top level of the repo)
# get your index and work tree into the desired state, without changing HEAD:
git checkout 0d1d7fc32 .

# Then commit. Be sure and write a good message describing what you just did
git commit

git-revert manpage aslında onun açıklamasını bu çok geniş bir alanı kapsamaktadır. Başka bir yararlı link this git-scm.com blog post discussing git-revert.

Eğer sonra geri dönmek istemediğini karar verirseniz, geri dön, burada açıklandığı gibi) ya da geri dönmek için önce geri dön (önceki bölüme bakın) sıfırlayabilirsiniz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Peyton

    Peyton

    28 Aralık 2008
  • sebsebdouze

    sebsebdouze

    7 ŞUBAT 2008
  • TouchePro

    TouchePro

    27 EYLÜL 2007

İLGİLİ SORU / CEVAPLAR