2016-12-18 3 views
3

Я действительно управляю git организованным способом, согласно моим знаниям. Я совершаю все изменения, так что я могу вернуться к одному фрагменту функции, когда захочу. В этом процессе я добавил функцию (commit # 74fd458) около 10 дней назад, где я добавил двоичный файл и внесли изменения в 3 отслеживаемых файла.Удалите определенную фиксацию, но сохраните все коммиты после этого

После этого я сделал не менее 15 коммитов.

dfs4334 - новый совершить 15
2yu44m6 - новый совершить 14
...
47jc063 - новый коммит 1
74fd458 - Target Commit (теперь кажется нежелательным)
560dfsf - старый совершить 1
lfg956d - старый фиксатор 2
...

Теперь я пришел к ситуации, в которой конкретная фиксация (функция чтения) не нужна. Итак, все очень просто, откройте визуализатор фиксации и удалите те конкретные строки, сделанные в этой конкретной фиксации, удалите этот двоичный файл, который был добавлен, и вы закончили. Но вы знаете, что это грязно.

Вопрос: Есть ли способ сохранить все изменения, которые я сделал после этого, но удалить или вернуть или выбрать конкретный коммит из ветки?


PS. Поскольку сценарий может меняться в любое время, эту функцию можно добавить позже. Поэтому я не хочу полностью удалять эту функцию из управления версиями, я просто помещаю эти вещи, но держу их где-нибудь, чтобы я мог объединить их в любое время, если это необходимо.

+1

Вы получите ответ, что вы хотите? Если да, отметьте это. И это поможет другим, у кого есть подобные вопросы. –

+0

@ Marina-MSFT благодарим за внимание. Я знаю это и хорошо знаю об этом. Но в настоящее время я в стороне от этой конкретной задачи. Будет реализовывать его в следующее доступное время inshALLAH и обязательно отметит правильный ответ. :) –

ответ

1

Есть ли способ, что я могу держать все изменения, которые я сделал после этого, но удалить, или вернуться, или выбрать конкретный совершить из отрасли?

git revert, вероятно, то, что вы ищете.
Из документации:

Откат некоторые существующие совершает

Учитывая один или несколько существующих фиксаций, отменить изменения, что соответствующие патчи ввести, и записать несколько новых фиксаций, которые регистрируют их

В вашем случае как оригинальная фиксация, так и (скажем) revert commit будет частью истории проекта.
Вы можете вернуть после того, как вы вернете фиксацию, если вам это нужно, то есть, если вам нужно применить оригинальную фиксацию еще раз.

Дополнительную информацию см. Связанную документацию.

+0

Просто побежал 'git revert 74fd458', и он работал как шарм. Большое спасибо –

0

Да, есть способ, чтобы удалить специфические фиксации и держать потом совершает:

  1. заказ в отрасль и использовать git rebase -i HEAD~16
  2. Существует интерактивное окно показывает последние коммиты (74fd458 на вершине и новейшие dfs4334 внизу).
  3. Input i и удалить коммит вы хотите удалить (pick 74fd458)
  4. Нажмите Esc кнопка, а затем ввод :wq

Так коммит 74fd458 будет удален.

Примечание: Если есть конфликт, вы должны использовать git add <filename> и git rebase --continue

+0

OP не хочет удалять эту фиксацию из контроля версий, поэтому в этом случае перестановка не подходит. – ZwoRmi

Смежные вопросы