Один из способов временно удалить вашу функцию, которая предшествует вашей истории репо Git, - это сделать фиксацию, которая удаляет эту функцию. Затем, когда вы хотите добавить эту функцию, просто revert the commit, которая вытащила ее. Это будет делать обратный патч, то есть он будет применять изменения в обратном направлении, что позволит эффективно повторно добавить функцию:
git revert <sha of commit that removed the feature>
Если вы хотите, чтобы убедиться, что вы можете легко повторно добавить функцию позже сохраняя его в синхронизации с изменениями кода в то же время, вы можете создать отдельную ветвь функции сразу же после ее удаления, а затем просто обработать эту ветку, как и любую другую ветвь функции, и сохранить ее в синхронизации, часто перезагружая ее против master
(или ветвь develop
, если так вы хотите это сделать), разрешая конфликты, когда вы идете.
В принципе, вы хотели бы сделать что-то вроде этого (неважно, если вы используете стратегию ветвления GitHub Flow или Git Flow, оба используют концепцию ветвей функциональности, которые в конечном итоге объединяются в основные функции, . линия развития Для простоты я буду использовать GitHub Flow в этом примере):
# On master branch
git commit -m "Remove feature X" # Creates commit 1234567...
# Now make feature branch
git checkout -b saved-feature
# Immediately put the feature back in the feature branch
git revert 1234567
# When you want to sync branch with master, just use rebase.
# Rebase allows you to sync frequently, since it doesn't
# leave behind a bunch of merge commits.
#
# From the feature branch:
git rebase master # Resolve any conflicts as needed.
# N commits later, you decide it's time to merge the feature
# back in. You can use fast-forward or non-fast-forward merge,
# it's up to you.
#
# Using fast-forward merge with master checked out (assuming
# feature branch was just rebased onto master):
git merge saved-feature
# Or forcing a merge commit, if that's what you want:
git merge --no-ff saved-feature
Предполагая, что вы сохранили saved-feature
в синхронизации часто с master
(или develop
, если это то, что вы используете), разрешение конфликтов, как вы идете, у вас не должно возникнуть проблем с объединением функции.
Документация для справки:
возможно дубликат [Как я могу переместить набор коммитов от мастера к отдельной отрасли?] (HTTP://stackoverflow.com/questions/1178553/how-can-i-move-a-set-of-commits-from-master-to-a-separate-branch) – RyPeck
Не ответ, но ... Я работаю с git в течение двух лет и не видел такой ситуации. Разделы функций должны быть объединены только в 'develop' /' master'/whatever else 'main', когда 100% готово. Не должно быть случаев, когда у вас есть код функции в главном, но он не готов или не был протестирован. – madhead
Вы можете отслеживать удаление кода. Насколько грамотны ваши коммиты? Вы, ребята, уверены, что можете удалить эту функцию через фиксации? Это важно для принятия решения по стратегии. – usumoio