2012-04-16 21 views
66

Git'te acemi yaşıyorum ve git üzerinde çalışıyorum. git - Sizin dalınız 'origin/master' in öncesinde 1 işlemden geçiyor

Ben git bazı dosyaları ekledi:
git add <file1> 
git add <file2> 

sonra incelenmek üzere o itmek istedi ama yanlışlıkla ben için gitmeyin değişti

git commit 

Bunu dosyaları yaptılar yorumlar.

git status 

ben o işlemek geri döndürmek istiyor

# On branch master 
# Your branch is ahead of 'origin/master' by 1 commit. 
# 
nothing to commit (working directory clean) 

diyor ve incelenmek üzere bu dosyaları itmek yerine işlemek istiyorum:
Şimdi komutu girin eğer. Bunu nasıl yapabileceğimi bilen var mı?

+0

Taahhüdünü geri almak isterseniz - [benzer soruya] bakın (http://stackoverflow.com/questions/927358/git-undo-last-) işlemek. –

+0

Kod incelemeleri için ne kullandığınızı bilmiyorum. Basit bir şekilde nasıl cevap verileceğine dair basit soru '' sıfırlanınca KAFA '' – Anonymoose

+0

HEAD'I sıfırladı. ama sonra itmeye çalıştığımda, o zaman o zaman ben psuh denedim o zaman D dosya1.py diyor, tekrar bana dalı 1/2 kaynak tarafından kökeni olduğunu söyledi – sam

cevap

97

Henüz taahhüt edilmemiş bir şey itemezsiniz çalıştırmaktır. İşlem sırası:

  1. Değişiklik yapınız.
  2. git add - Bu
  3. git commit işlemekten değişiklikleri aşamalarında - Bu lokal
  4. git push Aşamalı değişiklikleri taahhüt - Eğer işlemekle olmadan itmek ise bu uzak

için kaydedilmiş değişiklikler iter, hiçbir şey itti alır . Eklemeden taahhüt ederseniz, hiçbir şey taahhüt edilmez. Eğer taahhüt etmeden eklerseniz, hiçbir şey olmuyorsa, yalnızca eklemiş olduğunuz değişikliklerin aşağıdaki taahhüt için dikkate alınması gerektiğini hatırlar.

Gördüğünüz ileti (şubeniz 1 işlemden geçiyor) yerel havuzunuzun henüz aktarılmamış bir işlemi olduğunu gösterir.

Başka bir deyişle

: add ve commitpush, pull ve fetch bir uzaktan kumanda ile etkileşime işlemlerdir, yerel operasyonlardır.

Çalıştığınız yerde resmi bir kaynak denetim iş akışı olduğundan, bunun nasıl ele alınması gerektiğini dahili olarak sormalısınız.

+3

aha ok. Bu nedenle, taahhüt verildikten sonra, – sam

+4

'u itiraf etmeliyim. İyi bir açıklama - soruları muhtemelen, gerçekten de bu işlemi geri almak istemiyorlar, aksine, insanları, 'orijin' deposuna itmeden önce bu işlemi gözden geçirmeleri gerekiyor. Ayrıca http://git-scm.com/documentation – dbr

+0

adresinde gitmesi gereken öğretici/intros'tan birkaçını okumanızı tavsiye ederim. Gitim durumumda "Şubeniz 1 işlemden sonra menşe/geliştirmenin önündedir" yazıyor. Bu dosyaların nasıl değiştirildiğini tam olarak nasıl görüyorum? git diff bir şey yapmıyor gibi gözüküyor – Tom

3
git reset HEAD <file1> <file2> ... 

sadece (eğer paylaşmak istedim bir) işlemek değişiklikleri atmak ve son geri dönmek istiyorsanız

19

taahhüt sonrakinden belirtilen dosyaları kaldırmak:

git reset --hard HEAD~ 

Bunu yapmak istediğinizden emin olmak için kontrol etmek isteyebilirsiniz (git log), çünkü tüm değişiklikleri kaybedersiniz.

Daha güvenli bir alternatif

git reset --soft HEAD~ # reset to the last commit 
git stash    # stash all the changes in the working tree 
git push    # push changes 
git stash pop   # get your changes back 
32

git reset HEAD^ --soft

git reset HEAD^ --hard Sadece basit çalıştırarak bu çözüme

12

(arka işlemek son, değişiklikleri iptal et) (geri işlemek son, değişikliklerinizi kaydedin):

git pull 

Hiçbir şey Daha. Şimdi gösteriyor :

# On branch master 
nothing to commit, working directory clean 
+0

Gerekli olmayan birden fazla oluşturulmuş şube varsa, bu sorunlara neden olabilir. –

+0

Size geri döndü ve son işini kaybettin: D –

2

git sıfırlama BAŞ^

sonra değiştirilen dosyalar gösterilir gerekir.

Yapabilirsin yeni şube

kullanımı git ödeme içine modifiye dosyaları taşımak -b newbranch git ödeme -m "dosyalar değiştirilmiş" git push kökenli taahhüt newbranch

git ödeme ana

sonra temiz bir dalda olmalısınız ve değişiklikleriniz newbranch içinde saklanmalıdır. Daha sonra bu değişikliği ana dalda birleştirebilirsiniz

İlgili konular