Soru Mevcut, kaldırılmamış işi Git'te yeni bir şubeye taşı


Yeni bir özellik üzerinde çalışmaya başladım ve biraz kodladıktan sonra, bu özelliğin kendi dalında olması gerektiğine karar verdim.

Mevcut olmayan değişiklikleri yeni bir şubeye nasıl taşıyabilirim ve mevcut olanı sıfırlayabilirim?

Yeni özelliğin mevcut çalışmasını korurken mevcut şubemi sıfırlamak istiyorum.


2512
2017-09-08 15:57


Menşei




Cevaplar:


Aşağıdakileri kullanın:

git checkout -b <new-branch>

Bu, mevcut şubenizi olduğu gibi bırakacak, yeni bir şube oluşturacak ve kontrol edecek ve tüm değişikliklerinizi koruyacaktır. Daha sonra aşağıdakilerle bir taahhütte bulunabilirsiniz:

git add <files>

ve yeni şubenize şunları yapın:

git commit -m "<Brief description of this commit>"

İş dizinindeki değişiklikler ve endekste yapılan değişiklikler henüz bir şubeye ait değildir. Bu değişikliklerin nerede biteceği değişir.

Yapmıyorsun sıfırlamak Orijinal şubeniz olduğu gibi kalır. Son taahhüt <old-branch> hala aynı olacak. Bu yüzden sen checkout -b ve sonra işlemek.


2966
2017-09-08 15:59



Sadece emin olmak için, orijinal şubemi sıfırlamadan önce bitmemiş özelliği işlemek zorundayım? Yoksa işlenmemiş dosyalar, ne olursa olsun korunacak mı? - Dane O'Connor
FYI: çalışma dizinindeki değişiklikler ve endekste belirtilen değişiklikler bir şubeye ait değildir. git checkout -b <new branch> Bu değişikliklerin nerede biteceği değişir. - Jakub Narębski
Zaten bir şubeniz varsa ve değişikliklerinizi mevcut şubeye taşımak istiyorsanız, ödeme stackoverflow.com/questions/556923/... - Chirantan
Yeni şubenizi uzak depoya itmek isterseniz: stackoverflow.com/questions/2765421/... - Dewayne
@JDSmith: değişiklikleri değiştirmek yapma herhangi bir şubeye aittir. Sadece çalışma dizininde oturuyorlar git checkout ./git reset --hard geri dönülmez Kaldır onları - knittl


Alternatif:

  1. Mevcut değişiklikleri geçici stash'a kaydet:

    $ git stash

  2. Bu stash temelinde yeni bir şube oluşturun ve yeni şubeye geçin:

    $ git stash branch <new-branch> stash@{0}

İpucu: stash adının yazılmasını azaltmak için sekme tuşunu kullanın.


254
2018-06-19 00:18



Diğer şube zaten varsa, ödeme ile ona geçebilirsiniz, sonra git stash apply. - Archonic
Kabul edilen çözümden daha iyi - Jonathan Landrum
"İpucu: stash adının yazılmasını azaltmak için sekme tuşunu kullanın." İpucunu anlamıyorum. "Stash @ {0}" ismi değil mi? Bunu başarılı bir şekilde çalıştıramıyorum. - Herbert
Bu neden kabul edilen cevaptan daha iyidir? stackoverflow.com/a/1394804/754997 ? - Chris Page
Bunun neden daha iyi olduğunu anlamıyorum. git checkout -b <new branch name> - Noitidart


Eğer işlem yapıyorsanız kod yazarken ana şubenizde, ancak şu andaki işlemleri farklı bir şubeye taşımak istersiniz:

  1. Mevcut geçmişinizi yeni bir şubeye kopyalayın ve kabul edilmeyen değişiklikleri de beraberinde getirin:

    git checkout -b <new-feature-branch>
    
  2. Şimdi orijinal "dağınık" dalını geri çekmeye zorlayın: (buna geçiş yapmadan)

    git branch -f <previous-branch> <earlier-commit-id>
    

    Örneğin:

    git branch -f master origin/master
    

    veya 4 taahhüt yapmış olsaydınız:

    git branch -f master HEAD~4
    

Uyarı: Bu gösteriyor ki git branch -f master origin/master irade izleme bilgilerini sıfırla bu dal için. Eğer yapılandırdıysanız master başka bir yere itmek için şube origin/master o zaman bu konfigürasyon kaybolur.

Bir alternatif kullanmaktır bu sıfırlama tekniği. Ancak bu talimatlar, sahip olduğunuz hiçbir değişiklikten vazgeçmeyecektir. Bunları saklamak, önce onları saklamak ve sonunda onları imha etmek istiyorsan.


35
2018-02-12 07:44



Bu, sorulandan biraz farklı bir soruya cevap verir. Bu cevabı buraya koymaya karar verdim çünkü bir cevap ararken Google'ın bana getirdiği yer burası. Bu durumla ilgilenen asıl soru burada. - joeytwiddle


Bunu yaparsanız, tek bir taahhüt kimliğini de alabilirsin. Bunu, usta çalışmaya başladığımda sık sık yapıyorum ve sonra kökenime doğru ilerlemeden önce yerel bir şube oluşturmak istiyorum.

git cherry-pick <commitID>

Açıklandığı gibi kiraz toplama ile yapabileceğiniz çok şey var. İşteAma bu sizin için bir kullanım durumu olabilir.


15
2017-11-30 20:58



Kısmi değişiklikleri yeni şubeye taşımak için daha iyi bir çözüm ... Şu an için istediğiniz şeyi yapabildiğiniz, diğer tüm değişiklikleri saklayacağınız, şubeden ayrılmak istediğiniz şubeyi kontrol edin, yeni şubeye işleyen kiraz toplama, geri dönün orijinal şubeye, bir geri yükleme işlemini sıfırlayın, sonra bir popo yapın, ekleyin, işleyin ve hallelujah'ı söyleyin. - Meredith
@Meredith, haha, ya öyle bir şey. Bu, değişikliklerinizi önceden planlamadığınız sürece harika ve bunu kim yapıyor?) - password
Teşekkürler, dijital boynumu kurtardın. - Phil