Является ли "git clean" после "git stash clear" избыточным при создании первичной проверки?
Я хотел бы написать скрипт, который гарантирует успешную проверку Git без вмешательства пользователя. Я не против выбросить что-либо, что не может быть решено без вмешательства пользователя: например, незафиксированные изменения. Я хочу сохранить явно проигнорированные файлы (я считаю, что они находятся "под контролем версий").
Я сделал сценарий, основанный на рогах изобилия ответов на Как вы отбрасываете неустановленные изменения в Git? и исправление ошибок, с которыми я сталкивался с течением времени (аналогично, но не точно так же, как Unstaged изменения, оставшиеся после git --reset hard и игнорирования "Ваши локальные изменения в следующих файлах будут перезаписаны слиянием" при извлечении).
Теперь я обеспокоен тем, что мой фрагментарный сценарий содержит избыточности или может быть сокращен. Являются ли какие-либо из следующих вызовов избыточными?
cd /SOME/FOLDER
git clean -df & git checkout .
git stash
git stash clear
git checkout SOME-BRANCH # or git checkout -B SOME-REMOTE SOME-BRANCH [1]
# possibly followed by a manual call to: git pull --rebase SOME-REMOTE
[1] Могут ли эти звонки быть git checkout -f
а также git checkout -fB
?
1 ответ
Вот что я использую в одном из моих сценариев сборки, чтобы создать чистую проверку HEAD
(заменить HEAD
с любой веткой или коммитом, который вы хотите, или используйте переменную оболочки):
if [ $(git status --porcelain -uall | wc -l) -gt 0 ]; then
echo "Creating pristine checkout of HEAD."
git reset --quiet --hard HEAD
git clean --quiet -fd
fi
if
пункт проверяет, есть ли что-то, что нужно сделать вообще. Вы можете оставить это без внимания, если вас не волнует небольшое повышение эффективности, которое оно может (или даже не может) принести.
Если вы хотите также удалить файлы, которые находятся в правилах игнорирования (.gitignore
файлы), то вам нужно дать -x
возможность git-clean
и --ignored
возможность git-status
; Вы упомянули, что не хотите, чтобы это произошло.
Я не думаю, что любые другие звонки, которые вы делаете, необходимы. Очистка тайника не нужна (но это тоже не повредит).