Я просто клонував сховище git і перевірив гілку. Я працював над цим, а потім вирішив видалити всі мої локальні зміни, так як хотів оригінальну копію.
Коротше кажучи, мені довелося виконати наступні дві команди, щоб видалити свої локальні зміни
git checkout .
git clean -f
Моє запитання:
(1) Це правильний підхід до позбавлення від місцевих змін, або, будь ласка, повідомте мене про правильний підхід.
(2) коли ми використовуємо, git reset --hard
як я в змозі скинути, навіть без цієї команди
Дякую
* Рішення: Основні зміни: 03/26: * Замінено багато неясних термінів специфічною термінологією git [відслідковується / відслідковується / інсценізується / не змінюється]
Коли ми робимо локальні зміни, файлів може бути лише три категорії:
Тип 1. Поетапні відстежені файли
Тип 2. Ненаписані відстежені файли
Тип 3. Ненаписані файли без відстеження, також файли UnTracked
- Поетапні - ті, які переміщені до області постановки / додано до індексу
- Відстежені - модифіковані файли
- UnTracked - нові файли. Завжди без позначки. Якщо інсценізовано, це означає, що вони відстежуються.
Що робить кожна команда:
git checkout .
- ТІЛЬКИ видаляє нестандартні відстежені файли [Тип 2]git clean -f
- ТІЛЬКИ видаляє нерозподілені файли, що не відслідковуються [Тип 3]git reset --hard
- ТІЛЬКИ вилучає поетапні відстежувані та незаписані відстежені файли [Тип 1, Тип 2]git stash -u
- Видаляє всі зміни [Тип 1, Тип 2, Тип 3]
Висновок:
Зрозуміло, що ми можемо використовувати будь-яке
(1) combination of `git clean -f` and `git reset --hard`
АБО
(2) `git stash -u`
для досягнення бажаного результату.
Примітка: приховування, оскільки слово означає "Зберігати (щось) безпечно і таємно у визначеному місці". Це завжди можна отримати за допомогою git stash pop
. Тому вибір між перерахованими вище двома варіантами - це виклик розробника.
Дякую Крістофу та Фредеріку Шонінгу.
Редагування: 03/27
Я подумав, що варто поставити записку " остерігайся "git clean -f
git clean -f
Повернення назад немає. Використовуйте -n
або --dry-run
для попереднього перегляду завданої шкоди.
Якщо ви також хочете видалити каталоги, запустіть git clean -f -d
Якщо ви просто хочете видалити ігноровані файли, запустіть git clean -f -X
Якщо ви хочете видалити ігноровані, а також неігноровані файли, запустіть git clean -f -x
довідка: докладніше про те git clean
: Як видалити локальні (без трекінгу) файли з поточного робочого дерева Git?
Редагувати: 20.05.2015
Відмова від усіх локальних комісій у цій гілці [Видалення локальних комітетів]
Щоб відмовитись від усіх місцевих комісій у цій гілці, щоб зробити локальну гілку ідентичною "вище за течією" цієї гілки, просто запустіть git reset --hard @{u}
Довідка: http://sethrobertson.github.io/GitFixUm/fixup.html
або робити git reset --hard origin/master
[якщо місцеве відділення master
]
Примітка: 06.06.2015. Це не дублікат іншого запитання про те, що позначено як дублікат. Це питання стосується як видалити локальні зміни GIT [видалити доданий файл, видалити зміни, додані до існуючого файлу тощо, та різні підходи; Де в іншому потоці SO адресовано лише те, як видалити локальну комітку. Якщо ви додали файл, і його хочете видалити самостійно, то інший потік SO не обговорює його. Отже, це не дублікат іншого]
Редагування: 23.06.15
Як повернути комісію, вже переміщену у віддалений сховище?
$ git revert ab12cd15
Редагувати: 01.09.2015
Видаліть попередню комісію з локальної та віддаленої гілки
Випадок: Ви тільки що здійснили зміну у вашому місцевому відділенні і негайно відсунули до віддаленого відділення, раптом зрозумів: О ні! Мені не потрібні ці зміни. Тепер що робити?
git reset --hard HEAD~1
[для видалення комісії з місцевого відділення]
git push origin HEAD --force
[обидві команди повинні бути виконані. Для видалення з віддаленої гілки]
Яка галузь? Його наразі перевірена філія.
Редагувати 08.09.2015 - Видалити локальне об’єднання git :
Я перебуваю на master
гілці та об'єднав master
гілку з нещодавно працюючою гілкоюphase2
$ git status
# On branch master
$ git merge phase2
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 8 commits.
Питання: Як позбутися цього злиття? Спробував, git reset --hard
і git clean -d -f
обидва не працювали.
Єдине, що працювало - це будь-який із наведених нижче:
$ git reset --hard origin/master
або
$ git reset --hard HEAD~8
або
$ git reset --hard 9a88396f51e2a068bb7
[Код фіксації - це той, який був присутнім до того, як відбулися всі ваші об'єднання]
git stash -a
[або - всі] також зберігає ігноровані та відслідковувані файли. git clean -x
очистить ігноровані файли. git clean -X
очистить лише проігноровані файли.