Як скинути віддалене сховище Git, щоб видалити всі коміти?


164

Як я можу скинути віддалене та локальне сховище Git, щоб видалити всі коміти?

Я хотів би почати свіжий з нинішнім керівником як початковим зобов'язанням.



Я не хочу вибирати вишню чи робити щось інше, я просто хочу видалити всі зміни та також скинути публічне репо. Оскільки я є новим користувачем Git, я зробив декілька помилок. Видалення каталогу .GIT - це не варіант, оскільки є і загальнодоступний сховище.
Приянк Болія

Ви також можете натиснути, тому видалити .git dir - це фактично варіант.
Річка Ліліт

2
просто нитчікінг, але "ревізія" - це терміналогія svn і не має особливого сенсу в історії дерева.
Tamás Szelei

2
@ TamásSzelei "Перегляд" - цілком прийнятний синонім "вчинити". Він використовується як у книзі Pro Git (наприклад, тут ), так і на сторінках Git man.
jub0bs

Відповіді:


348

Повністю скинути?

  1. Видалити .gitкаталог локально.

  2. Відтворити репозиторій git:

    $ cd (project-directory)
    $ git init
    $ (add some files)
    $ git add .
    $ git commit -m 'Initial commit'
    
  3. Натисніть на віддалений сервер, перезаписавшись. Пам'ятайте, що ви збираєтеся зіпсувати всі інші, роблячи це ... краще вам бути єдиним клієнтом.

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

1
але комітети пішли, і сховище скидається. Чи можемо ми видалити ці попередні повідомлення також перед іменами.
Приянк Болія

2
Видаліть віддалений сховище безпосередньо на GitHub і відтворіть його там.
Бомбе

1
Має бути git push --force замість git push -force
William Notowidagdo

6
Якщо ви не хочете вводити жодних файлів у своєму "Початковому фіксування", ви можете просто не додавати жодних файлів і додати --allow-emptyпрапор наприкінці git commit -m 'Initial commit'.
raf

2
Використовуючи Git 2.3.2, мені довелося користуватися, git push --force --set-upstream origin masterале все інше працювало так, як описано
Sébastien Stormacq

6

По-перше, дотримуйтесь вказівок у цьому запитанні, щоб усе примусити до одного зобов'язання. Потім натисніть на пульт дистанційного керування:

$ git push origin +master

І необов'язково видалити всі інші гілки як локально, так і віддалено:

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

0

Якби я був ти, я робив би щось подібне:

Перш ніж робити що-небудь, будь ласка, збережіть його копію (краще, ніж безпечно)

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

Після цього ви можете видалити інші гілки.

Результат: у вас буде відділення, у якому лише 2 коміти.

Використовуйте, git log --onelineщоб побачити свої зобов’язання мінімалістично і знайти SHA-1 для комісій!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.