Как добавить определенные файлы в 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.