Предположим
У меня есть последние изменения, добавленные или не добавленные в индекс. Теперь я выбираю конкретную фиксацию, не создавая новую фиксацию в своей ГОЛОВЕ...
git cherry-pick -n <commit>
Как удалить из индекса ненужные изменения? я мог бы сделать
git reset HEAD
но мне придется повторить все изменения, которые я добавил ранее.
Цель
Если кто-то делает тайник, тайник не может быть перемещен на удаленный компьютер. Текущий WIP нельзя получить с пульта в другой системе для работы. Поэтому я написал функции оболочки для имитации git-stash, за исключением того, что я использую ветки для каждого тайника.
apply
или pop
обычно применяют спрятанные изменения к WIP, но не к текущему индексу. Пока я использую вишневый выбор для применения изменений из ветки stash, все эти изменения будут добавлены в индекс, и впоследствии мне нужно будет удалить их из индекса.
Изменить (2018-01-29)
Я прочитал ответ @torek и понял его. Тем не менее, мне нравится делиться своими функциями bash, которые я уже использовал раньше.
function git-stash {
local gitbranch="$( git branch | grep \* )"
local currentbranch="$( [ "${gitbranch}" == "* (HEAD"* ] && echo "${gitbranch}" | cut -d ' ' -f5 | cut -d ')' -f1 || echo "${gitbranch}" | cut -d ' ' -f2- )"
local stashname="stash/$( date +%s )"
git stash save -u ${stashname}
git checkout -b ${stashname}
git stash pop
git add .
[ ${1} ] && git commit -m "WIP: "$1 || git commit -m "WIP"
git checkout ${currentbranch}
}
function git-stash-apply {
local stashbranches="$( git branch | grep stash/ | cut -d ' ' -f3- | sort -r )"
local stashbranches=(${stashbranches[@]})
local lateststashbranch="${stashbranches[0]}"
git cherry-pick -n "${lateststashbranch}"
}
function git-stash-pop {
local stashbranches="$( git branch | grep stash/ | cut -d ' ' -f3- | sort -r )"
local stashbranches=(${stashbranches[@]})
local lateststashbranch="${stashbranches[0]}"
git cherry-pick -n "${lateststashbranch}"
git branch -D "${lateststashbranch}"
git push origin :"${lateststashbranch}"
}
Это еще не правильное решение, не говоря уже об отсутствующей обработке ошибок в файле stash pop
.