Я роздрібнив сховище, потім я вніс деякі зміни, і схоже, я все переплутав.
Я хочу розпочати його знову з нуля, використовуючи поточний верхній / поточний майстер як основу для своєї роботи.
Чи повинен я відновити сховище або взагалі видалити його?
Я роздрібнив сховище, потім я вніс деякі зміни, і схоже, я все переплутав.
Я хочу розпочати його знову з нуля, використовуючи поточний верхній / поточний майстер як основу для своєї роботи.
Чи повинен я відновити сховище або взагалі видалити його?
Відповіді:
Найпростішим рішенням було б (використання " upstream" як віддаленого імені, що посилається на оригінал роздвоєного репо):
git remote add upstream /url/to/original/repo
git fetch upstream
git checkout master
git reset --hard upstream/master
git push origin master --force
(Подібно до цієї сторінки GitHub, розділ "Що робити, якщо я потрапив у погану ситуацію?" )
Майте на увазі, що ви можете втратити зміни, зроблені на masterгілці (як локально, так reset --hardі через віддалену сторону, через те push --force).
Альтернативою може бути, якщо ви хочете зберегти свої зобов’язання master, щоб перетворити ці комітети на вершині поточної upstream/master.
Замініть частину скидання на a git rebase upstream/master. Тоді вам все одно потрібно буде натискати.
Дивіться також " Що мені робити, якщо я потрапив у погану ситуацію? "
Більш повне рішення, створити резервну копію вашої поточної роботи (про всяк випадок), детально описано в " Очищення основного відділення git та переміщення деяких зобов'язань до нової гілки ".
Дивіться також " Витягніть нові оновлення з оригінального сховища GitHub у роздвоєне сховище GitHub ", щоб проілюструвати, що таке " upstream".

Примітка: останні репозитори GitHub захищають цю masterгілку від push --force.
Тож вам доведеться спочатку зняти захист master(див. Малюнок нижче), а потім знову захистити його після натискання силою ).
Примітка. Спеціально на GitHub зараз (лютий 2019 року) є ярлик для видалення роздвоєних репост для запитів на витяг, які були об'єднані вище за течією.
git reset --hard upstream/master
git resetвідповіді.
git remote" в stackoverflow.com/a/3903835/6309 .
Відповідь любові VonC. Ось проста версія його для початківців.
Є пульт дистанційного керування, originякий називається, я впевнений, що ви всі знаєте. В основному, ви можете додати стільки віддалених файлів, скільки захочете. Отже, ми можемо зробити новий пульт, який є оригінальним репо, а не вилкою. Мені подобається це називатиoriginal
Додамо оригінальні репо-файли до нашої вилки як віддалений.
git remote add original https://git-repo/original/original.git
Тепер давайте вийдемо з оригінальним репо, щоб переконатися, що у нас останнє кодування
git fetch original
Як, запропонував VonC, переконайтеся, що ми на майстра.
git checkout master
Тепер, щоб наблизити нашу вилку до останнього коду на оригінальному репо, все, що нам потрібно зробити, це важко скинути нашу головну гілку відповідно до оригінального пульта.
git reset --hard original/master
І ви закінчили :)
fatal: ambiguous argument 'original/master': unknown revision or path not in the working tree.до останнього кроку. Будь-яка порада?
originalкраще, ніж upstream(якими користуються документи Github), як origin/masterце "вище" місцевих master. Зменшує неоднозначність. Цікаво, чи це саме для цього ви використовуєте?
Після @VonC чудова відповідь. Ваша політика компанії GitHub може не дозволити "натискати" на "master".
remote: error: GH003: Sorry, force-pushing to master is not allowed.
Якщо ви отримаєте таке повідомлення про помилку, будь ласка, спробуйте виконати наступні дії.
Для ефективного скидання виделки потрібно виконати наступні дії:
git checkout master
git reset --hard upstream/master
git checkout -b tmp_master
git push origin
Відкрийте свою вилку в GitHub, у розділі "Налаштування -> Відділення -> Гілка за замовчуванням" виберіть "new_master" як нову гілку за замовчуванням. Тепер ви можете натиснути на "головну" гілку:
git checkout master
git push --force origin
Тоді ви повинні встановити назад "master" як гілку за замовчуванням у налаштуваннях GitHub. Щоб видалити 'tmp_master':
git push origin --delete tmp_master
git branch -D tmp_master
Інші відповіді, що попереджають про втрату змін, все ще діють, будьте обережні.
(Не всім подобається робити справи через інтерфейс командного рядка git)
Після того, як це налаштовано, вам потрібно буде лише робити кроки 7-13 з цього моменту.
Витягнути> головна гілка каси> скинути їх на головний> Відправити зміни на сервер
Двічі клацніть на вашій «головній» гілці, щоб перевірити, чи вона вже не перевірена.
Знайдіть команду, до якої ви хочете скинути, якщо ви назвали repo "майстром", ви, швидше за все, захочете знайти команду з тегом "master / master" на ній.
Клацніть правою кнопкою миші на фіксації> "Скинути поточну гілку до цього".
У діалоговому вікні встановіть поле "Використовуючи режим:" на "Жорстко - відмініть всі зміни робочої копії", потім натисніть "ОК" (переконайтеся, що спочатку всі зміни, які ви не хочете втратити, перейдіть на окрему гілку).
Ваше Готово!