Можно ли комбинировать трещотки в 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^

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

Есть ли причина, по которой вы уже не используете ветки?

Другие вопросы по тегам