Tüm taahhütleri kaldırmak için uzak bir Git deposunu nasıl sıfırlayabilirim?


164

Tüm taahhütleri kaldırmak için uzak ve yerel bir Git deposunu nasıl sıfırlayabilirim?

İlk başkan olarak şu anki Başkan ile yeni bir başlangıç ​​yapmak istiyorum.



Kiraz almak veya başka bir şey yapmak istemiyorum, sadece tüm değişiklikleri kaldırmak ve halka açık repoyu sıfırlamak istiyorum. Yeni Git kullanıcısı olduğum için bazı yanlış taahhütlerde bulundum. .GIT dizinini kaldırmak, bir genel depo da olduğundan bir seçenek değildir.
Priyank Bolia

Ayrıca bir kuvvet zorlaması da yapabilirsiniz, bu nedenle .git dir.
Lilith River

2
sadece nitpicking, ama "revizyon" svn terminolojisidir ve ağaç şeklinde bir tarihte pek bir anlam ifade etmez.
Tamás Szelei

2
@ TamásSzelei "Revizyon", "taahhüt" ile mükemmel bir eşanlamlıdır. Hem Pro Git kitabında (örneğin burada ) hem de Git man sayfalarında kullanılır.
jub0bs

Yanıtlar:


348

Tamamen sıfırlandı mı?

  1. .gitDizini yerel olarak silin .

  2. Git deposunu yeniden oluşturun:

    $ cd (project-directory)
    $ git init
    $ (add some files)
    $ git add .
    $ git commit -m 'Initial commit'
    
  3. Üzerine yazarak uzak sunucuya aktarın. Bunu yaparken herkesi mahvedeceğinizi unutmayın ... tek müşteri olsanız iyi olur.

    $ git remote add origin <url>
    $ git push --force --set-upstream origin master
    

1
ancak taahhütler gitti ve depo sıfırlandı. Önceki mesajları dosya adlarının önünde de kaldırabilir miyiz?
Priyank Bolia

2
Uzak deposu doğrudan GitHub'dan kaldırın ve orada yeniden oluşturun.
Bombe

1
Git push -force yerine git push --force olmalı
William Notowidagdo 30:11

6
"İlk kaydetme" işleminizde herhangi bir dosya işlemek istemiyorsanız, dosya ekleyemez ve --allow-emptyişaretini sonuna ekleyebilirsiniz git commit -m 'Initial commit'.
raf

2
Git 2.3.2 kullanarak kullanmak zorunda kaldım git push --force --set-upstream origin masterAma geri kalan her şey anlatıldığı gibi çalışıyordu
Sébastien Stormacq

6

İlk olarak, her şeyi tek bir taahhütte ezmek için bu sorudaki talimatları izleyin . Sonra uzaktan kumandaya zorla itin:

$ git push origin +master

Ve isteğe bağlı olarak diğer tüm dalları hem yerel olarak hem de uzaktan silin:

$ git push origin :<branch>
$ git branch -d <branch>

0

Ben olsaydım böyle bir şey yapardım:

Bir şey yapmadan önce lütfen bir kopyasını saklayın (üzgünümden daha güvenli)

git checkout master
git checkout -b temp 
git reset --hard <sha-1 of your first commit> 
git add .
git commit -m 'Squash all commits in single one'
git push origin temp

Bunu yaptıktan sonra diğer dalları silebilirsiniz.

Sonuç: Sadece 2 taahhütlü bir şubeniz olacak.

Kullanım git log --onelineminimalist şekilde kaydedilmesini görmek ve kaydedilmesini için SHA-1 bulmak için!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.