Вы хотите, чтобы автоматический «моментальный снимок» фиксировал, что сквош вниз, как только у вас есть подлинная фиксация.
Вот моя грубая идея:
- Treat
master
в качестве «официальной» совершать сроки и работы в полнометражном отрасли. (Это довольно ортодоксальный рабочий процесс).
- Работа в так называемой ветке функций, которая выполняет автоматические снимки (с помощью команды zsh)
- Когда вы готовы к (человеческому) фиксации, объедините все автоматические снимки из ваш филиал функции в мастер с
--squash
и совершите с соответствующим сообщением.
Для этого могут потребоваться некоторые псевдонимы как в zsh, так и git, но я думаю, что это может сработать. Вот несколько грубых идей, ключевым из которых является git merge --squash. (Кроме того, извините, я говорю только баш.)
# I type this manually when I start work in the morning.
start-snapshotting() {
git checkout -b auto-snapshots master
PROMPT_COMMAND=git-snapshot
}
git-snapshot() {
branch=`git symbolic-ref HEAD`
[ "$branch" = "refs/heads/auto-snapshots" ] || return 1
git add . && \
git status > /dev/null &&
git commit -m 'Automatic snapshot'
}
# Do a real commit that I am interested in preserving.
# Parameters are passed unmodified to "git commit"
commit() {
git checkout master && \
git merge --squash auto-snapshots && \
git commit "[email protected]" && \
git branch -D auto-snapshots && \
git checkout -b auto-snapshots master
}
# I type this when I am done coding.
stop-snapshotting() {
unset PROMPT_COMMAND
git checkout master && \
git branch -D auto-snapshots
}
Имейте в виду, что будет тонн краевых случаев, таких как файлы, которые вы должны были добавлены в .gitignore и я уверен, много других. Но я думаю, что это может сработать.
Повторите свой рабочий процесс, чтобы совершать более часто. Старайтесь не делать глупых вещей - это больно. В git есть механизмы, позволяющие вам изменять историю; Я должен буду читать то, что они есть, но Google git squash совершает ». –
Если вы автоматически совершаете все, как вы намерены на самом деле совершить что-либо намеренно? –
Я настоятельно рекомендую против автоматических коммитов. Но неясно, каков ваш вопрос, так как автоматические коммиты довольно тривиальны. Вы спрашиваете о методах очистки их от репо? –