SORU
2 NİSAN 2010, Cuma


Git: master unstaged/uncommited değişikliklerden bir şube Oluşturmak

İçerik: usta basit bir özellik eklemeye çalışıyorum. Birkaç dakika sonra, bunun o kadar kolay olmadığını fark ettim ve daha yeni bir şube içine çalışmak olmalıydı.

Bana da hep böyle olur ve başka bir dala geçiş ve benimle bu uncommited değişiklikler ana şube temiz bırakarak nasıl hiçbir fikrim yok. git stash && git stash branch new_branch sadece işe yarayacağını yapacaktım ama bu da nedir:

~/test $ git status
# On branch master
nothing to commit (working directory clean)

~/test $ echo "hello!" > testing 

~/test $ git status
# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   testing
#
no changes added to commit (use "git add" and/or "git commit -a")

~/test $ git stash
Saved working directory and index state WIP on master: 4402b8c testing
HEAD is now at 4402b8c testing

~/test $ git status
# On branch master
nothing to commit (working directory clean)

~/test $ git stash branch new_branch
Switched to a new branch 'new_branch'
# On branch new_branch
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   testing
#
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (db1b9a3391a82d86c9fdd26dab095ba9b820e35b)

~/test $ git s
# On branch new_branch
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   testing
#
no changes added to commit (use "git add" and/or "git commit -a")

~/test $ git checkout master
M   testing
Switched to branch 'master'

~/test $ git status
# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   testing
#
no changes added to commit (use "git add" and/or "git commit -a")

Eğer bunun üstesinden gelmenin bir yolu varsa biliyor musunuz?

CEVAP
2 NİSAN 2010, Cuma


Hayır saklamak gerekiyor.

git checkout -b new_branch_name

dokunmayın yerel değişiklikler yapar. Sadece geçerli kafasındaki şube oluşturur ve orada BAŞINI ayarlar. Sizin istediğiniz de buydu sanırım.

--- Checkout master sonucu açıklamak için Düzenle ---

checkout master değişikliklerinizi atmak değil çünkü kafanız mı karıştı?

Değişiklikler yalnızca yerel olduğundan, git onlara çok kolay kaybetmek istemiyor. Şube değiştirme üzerine git yerel değişiklikleri geçersiz kılmaz. checkout master senin sonucu:

M   testing

çalışma dosyalarınızı temiz değil demektir., git BAŞINI değiştirdi, ama yerel dosyaların üzerine değil. Son durum hala master üzerinde olmasına rağmen yerel değişikliklere neden olur.

Eğer gerçekten yerel değişiklikleri atmak istiyorsanız, -f çıkış gücü var.

git checkout master -f

Değişikliklerinizi asla işlenmiş olduğu için, onları kaybedersiniz.

Şubenize dönün, yaptığınız değişiklikleri işlemek, usta tekrar kontrol deneyin.

git checkout new_branch
git commit -a -m"edited"
git checkout master
git status

İlk ödeme sonra M mesajı almak gerekir, ama sonra checkout master git status sonra artık hiçbir değiştirilmiş dosyaları göstermelidir.

--- Çalışma dizini hakkındaki karışıklıkları gidermek için Düzenle (yerel dosyalar)---

İlk Yorum yanıt olarak, yerel değişiklikler sadece... şey, yerel. Git onları otomatik olarak kaydetmez, daha sonra için onları kurtarmak için söylemelisin. Yaptığınız ve açıkça taahhüt veya onları saklamak, git onları sürüm değil. Eğer BAŞ (checkout master) değiştirirseniz, yerel değişiklikleri üzerine kaydedilmemiş.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FUNKER530 - Veteran Community & Combat Footage

    FUNKER530 -

    25 Ocak 2007
  • Tylerron

    Tylerron

    6 AĞUSTOS 2006
  • USI Events

    USI Events

    6 AĞUSTOS 2013