2012-04-12 20 views
9

Bir dosyaya yanlışlıkla eklediğim bir repoya bir taahhütte bulundum. Geçmişi yeniden yazabilmem için uzaktan repodan başka kimse birleşmedi. Ancak, dosyayı (kaynak, kaynak denetiminden veya diskten kaldırmayın) yerel işlemden kaldırdığımda, değişiklikleri değiştiremiyorum. git push herşey gösterir kadar güncelDosyayı değiştirilmiş bir işlemden kaldır

cevap

3

Ben Colin ve ydroneaud ileri sürmüşlerdir ne benzer bir şey yaptı da,

cevap

kullanmaktı
git push +sa1:sa1 

sa1 şubemdir. Bu, 'hiçbir şeyi' bile zorlamaya zorlar.

4

Dene:

git rm --cached <yourfile> 
git commit --amend 
git push -f 
+0

Dosyayı yalnızca işlemden izlemeden kaldırmak istemiyorum. – sa1

+0

@ sa1 git'de izleme kavramı yok, dosyanız ya son işleminizde ya da değil, hepsi bu. Diğer seçenek sadece dosyayı orada bırakıyor ancak içeriğin veya parçanın kaldırılmaması. Git, "dosya sistemi adamı" tarafından yapılan bir "aptal içerik izleyici" dir. ;) – KurzedMetal

+0

@KurzedMetal İzlenen dosyalar kavramı var. Burada yaptığınız şey, dosyayı izlenen dosyalardan kaldırmaktır, ne yapmak istediği bir dosyada yapılan değişikliklerin kaldırılmasıdır. –

5

tam işlemeye tutmak gerekir Bunu yapmadan önce

git reset HEAD^ 
git add <files to be part of the commit> 
# or git add -pu 
git commit -C <previous commit number> 

kullanmayı deneyin yeniden gerekiyorsa taahhütlü mesaj/tarih/yazarı tekrar kullanabilmek için son taahhüt numarası. İşte

+0

Benzer bir şey yaptım. Sorun, bu değişiklikleri uzaktan repoda zorlayamamamdı. – sa1

9

gitmek:

git checkout HEAD~ -- path/to/your/file 
git add path/to/your/file 
git commit --amend -C HEAD 

git diff -p HEAD~ -- path/to/your/file | git apply -R 
git commit --amend -C HEAD 

git reset HEAD~ -- path/to/your/file 
git commit --amend -C HEAD 
+0

Bunu yaptım. Sorun, değişikliklerin uzaktaki repo'ya itilmemesiydi. – sa1

+0

Onları itmelisin. –

+0

push --force denediğim şeylerden biriydi. – sa1

İlgili konular