Нечто подобное должно работать. Обязательно запустите его в копии вашего Git repo сначала, чтобы убедиться, что он работает правильно; если вы не будете осторожны с запуском reset
, можно потерять работу. В общем, при выполнении таких манипуляций вы должны убедиться, что ваш каталог чист; все должно быть зафиксировано, спрятано или проигнорировано, поэтому нет никаких важных изменений или незакрепленных файлов.
git reset --soft HEAD^
git reset $(git diff --cached --name-only -- '*Test.java')
git commit -m "This is the first commit, that does not contain the *Test.java"
git add -u .
git commit -m "This is the second commit, of just the *Test.java files"
reset --soft
сбросит вас совершить HEAD^
, но все изменения от последней фиксации еще поставил, готовы к фиксированию. Следующий git reset
остановит все измененные файлы с именем *Test.java
, оставив остальные по-прежнему поставлены. Конец будет выполнять те изменения, которые все еще проводятся. Теперь вы снова создаете все остальные файлы, с git add -u .
(это будет только сфабриковать файлы, которые будут изменены, но не будет добавлять новые файлы, поэтому это безопасно работать, даже если у вас есть другие файлы, которые вы не хотите добавлять к вашему фиксации, если у вас есть новые файлы, которые вы не выполняли в процессе выполнения этого, затем отпустите -u
или добавьте их отдельно). И затем вы фиксируете этот второй набор файлов.
Работал отлично. Большое спасибо. Один вопрос: - кэшированный - это то же самое, что и правильное? – Charlotte
Да, '--cached' совпадает с' -staged'. –