Можно ли комбинировать трещотки в Git?
Я работаю с Git над проектом, и по причинам, которые мне не нужны, я обнаружил, что мне, возможно, придется внести некоторые изменения в код, а затем спрятать их, а не фиксировать. Иногда мне могут понадобиться эти изменения, но не всегда, и я не хочу, чтобы они были постоянными. Тем не менее, работа может быть большой, и я хотел бы попытаться избавить себя от некоторых проблем.
Предположим, я сохранил несколько git-тайников, чтобы мой stash выглядел так:
stash@{0}: First change
stash@{1}: Second change
...
stash@{10}: Last and final change
Есть ли способ объединить все эти изменения в одну команду? Или, возможно, объединить их во что-то вроде stash@{11}: All previous changes together
?
Или это вообще хорошая идея?
РЕДАКТИРОВАТЬ: После некоторого исследования, я понял, что я действительно должен просто ветвиться и не использовать git stash таким образом. Спасибо за ответы!
2 ответа
Или, может быть, сделать ветку? В Git ветки дешевы и не будут отправлены на удаленное репо, если вы не скажете Git об этом. Пример на практике.
Создайте ветку с именем "my-hidden-feature":
git checkout -b my-hidden-feature
Редактировать и фиксировать вещи (например, локальный файл конфигурации):
touch test.config # Create a new file
git add test.config # Add the new file
git commit -m "Test commit" # Commit your hidden feature
Вернитесь к исходному коду и поработайте:
git checkout master # Return to the main branch
...work here... # Do some work
git commit -am "Work on master" # Commit your work
О, вам нужна скрытая функция? Легко:
git checkout my-hidden-feature # Go to your hidden branch
git rebase master # Update the hidden feature with new commits from master
...do some stuff... # Do some work on the hidden branch
git commit -am "A new hidden commit"
И так далее!
Ах, последнее, но не менее важное. Если вы работаете из командной строки, я настоятельно рекомендую такие инструменты, как oh-my-zsh, которые имеют плагин, который может отображать текущую ветку в вашем терминале. Очень, очень полезно, если вы не хотите заблудиться в Git Limbo.
Вы жестоко злоупотребляете тайником. Тайник - не что иное, как скрытая одноразовая ветвь. git stash save
Является ли это:
git checkout -b stashbranch
git add -A
git commit -m "stashentry"
git checkout -
git stash apply
делает что-то вроде:
git cherry-pick *stashcommit*
git reset HEAD^
Если вы понимаете, что делают эти команды, вам не нужно будет использовать тайник для сложных устройств, таких как этот случай.
Есть ли причина, по которой вы уже не используете ветки?