Пришел к такому подходу (и он, вероятно, точно такой же, как использование интерактивной перебазировки), но для меня это довольно просто.
Примечание: я представляю этот подход для иллюстрации того, что вы можете сделать, а не для повседневной альтернативы. Так как в нем много шагов (и, возможно, несколько предостережений).
Скажем, вы хотите изменить коммит 0
, и вы в настоящее время находитесь на feature-branch
some-commit---0---1---2---(feature-branch)HEAD
. а quick-branch
. Вы также можете клонировать свою функциональную ветвь как точку восстановления (перед запуском).
?(git checkout -b feature-branch-backup)
git checkout 0
git checkout -b quick-branch
Теперь у вас будет что-то вроде этого:
0(quick-branch)HEAD---1---2---(feature-branch)
Смена сцены, спрятать все остальное.
git add ./example.txt
git stash
Передать изменения и оформить заказ обратно на feature-branch
git commit --amend
git checkout feature-branch
Теперь у вас будет что-то вроде этого:
some-commit---0---1---2---(feature-branch)HEAD
\
---0'(quick-branch)
Перебазировать feature-branch
на quick-branch
( разрешать любые конфликты по пути). Примените тайник и удалите quick-branch
.
git rebase quick-branch
git stash pop
git branch -D quick-branch
И вы получите:
some-commit---0'---1'---2'---HEAD(feature-branch)
Git не будет дублировать (хотя я не могу точно сказать, в какой степени) коммит 0 при ребазинге.
Примечание: все хеши коммитов меняются, начиная с коммита, который мы изначально намеревались изменить.
JScience является расширяемым, поэтому у вас должна быть возможность создать подкласс javax.measure.unit.SystemOfUnits. Вы создадите несколько общедоступных статических окончательных объявлений, подобных этому:
public final class Cooking extends SystemOfUnits {
private static HashSet<Unit<?>> UNITS = new HashSet<Unit<?>>();
private Cooking() {
}
public static Cooking getInstance() {
return INSTANCE;
}
private static final Cooking INSTANCE = new SI();
public static final BaseUnit<CookingVolume> TABLESPOON = si(new BaseUnit<CookingVolume>("Tbsp"));
...
public static final Unit<CookingVolume> GRAM = TABLESPOON.divide(1000);
}
public interface CookingVolume extends Quantity {
public final static Unit<CookingVolume> UNIT = Cooking.TABLESPOON;
}
Довольно просто определить другие единицы и преобразования, если вы знаете, каковы коэффициенты преобразования.
Думаю, вы можете проанализировать вики-страницу на предмет измерений кулинарии: Кулинарные веса и меры
Все меры организованы в таблицах, поэтому их будет довольно легко проанализировать выход.
Это может быть полезно: JUnitConv . Это Java-апплет для преобразования единиц (включая кухонные), но он под лицензией GPL, поэтому вы можете скачать исходный код и адаптировать соответствующие части для собственного использования.
С другой стороны, похоже, что этого не должно быть. трудно создать класс CookingUnits
, совместимый с JSR 275. (Это то, что я бы сделал)