Как добавить определенные файлы в git по их количеству в статусе git?

Я часто сталкиваюсь со следующим сценарием:

modified:   assembly/main.debug.s
modified:   ../src/cd/Config.java
modified:   ../src/cd/memoization/cfg/SubgraphFinder.java
modified:   ../src/cd/memoization/cfg/SubgraphMap.java
modified:   ../src/cd/profiler/Profile.java
modified:   ../test/cd/test/TestSamplePrograms.java
modified:   ../../notes/20150521.txt

Здесь у меня есть куча файлов, и я хочу включить их в различные коммиты. Что я делаю до сих пор, это сделать кучу git add <pathspec> с последующим соответствующим git commit, <pathspec> это то, что меня раздражает. Есть ли что-то вроде следующего?

1 modified:   assembly/main.debug.s
2 modified:   ../src/cd/Config.java
3 modified:   ../src/cd/memoization/cfg/SubgraphFinder.java
4 modified:   ../src/cd/memoization/cfg/SubgraphMap.java
5 modified:   ../src/cd/profiler/Profile.java
6 modified:   ../test/cd/test/TestSamplePrograms.java
7 modified:   ../../notes/20150521.txt

git magic 2,3,5 -m "My super simple commit"

1 ответ

Решение

Пример репо:

Я использую пример репо с четырьмя файлами: a, b, c, d.
Вот a отслеживается, изменяется и ставится; b отслеживается, изменяется и не ставится; c в неотслеживании и постановке; d просто не отслеживается

введите описание изображения здесь

Внешний инструмент: GIT-номер

При запуске без аргументов "git number" запускает "git status" и прикрепляет уникальный номер для каждой строки имени файла, напечатанного "git status", и он "запоминает" эту связь числа с именем файла. Когда запускается с аргументами, вот так:

$ git number <any git command> [one or more numbers or git options/args]

'git number' запустит это и подставит все числа в их эквивалентные имена файлов. Нечисловые аргументы передаются в git без изменений.

введите описание изображения здесь

Это доступно с другими командами.

введите описание изображения здесь

Внешний инструмент: SCM Breeze

SCM Breeze - это набор сценариев оболочки (для bash и zsh), которые улучшают ваше взаимодействие с git. Он интегрируется с вашей оболочкой, предоставляя вам пронумерованные ярлыки файлов, индекс репозитория с завершением табуляции и многие другие полезные функции.

SCM Breeze использует сочетания клавиш и псевдонимы для работы с файлами git по номеру:

Ctrl + x, c => git_add_and_commit - добавить данные файлы (если есть), затем зафиксировать поэтапные изменения

Ctrl + x, Пробел => git_commit_all - совершить все

git add:

$ ga 1

git diff:

$ gd 2

git reset:

$ grs 3

git commit:

$ gco 4

Родной путь с git add -i

git add -i

Из ссылки Git:


--interactive
В интерактивном режиме добавьте измененное содержимое рабочего дерева в индекс. Необязательные аргументы пути могут быть предоставлены, чтобы ограничить работу подмножеством рабочего дерева. Подробнее см. "Интерактивный режим".

Вы можете запомнить это как -i ntuitive, потому что интерфейс действительно интуитивно понятен. Ну, по крайней мере, для хардкорных пользователей Vim.

Открытие интерактивного режима: введите описание изображения здесь

Добавление (размещение) отслеживаемого файла: введите описание изображения здесь

Добавление неотслеживаемого файла: введите описание изображения здесь

Смотрите изменения: введите описание изображения здесь

Если вы застряли в середине добавления, нажмите Return с пустой строкой.

Замечания:

Если вы перепутали с внешним видом и цветом: я использовал iTerm2 + zsh + oh-my-zsh.

Другие вопросы по тегам