#git #git_add #git_status
Я часто сталкиваюсь со следующей ситуацией: 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 magic-status 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-commit 2,3,5 -m "Простой и удобный способ" Как можно это сделать? Для пометки связанных вопросов на разных языках: https://stackoverflow.com/questions/30411901/how-to-add-specific-files-in-git-by-their-number-in-git-status Это перевод собственного ответа с EN.SO
Ответы
Ответ 1
Демонстрационный репозиторий: Для примеров я использую репозиторий с четырьмя файлами: a, b, c, d. Из них a - отслеживается, изменен, добавлен (tracked, changed and staged); b отслеживается, изменен, но не добавлен (tracked, changed and not staged); c не отслеживается, но добавлен; d просто ещё не отслеживается. 1. Отдельная утилита: git-number При запуске без аргументов, git number выполняет обычный git status, добавляя уникальный номер каждой выводимой строке с именем файла. Он "запоминает" соответствие номера файлу. При запуске с аргументами: $ git number <любая команда git> [одно или несколько чисел, и/или --аргументов] git number запускает эту <любую команду>, заменяя все числа соответствующими именами файлов. Нечисловые аргументы передаются в git без изменений. Пример с командой diff : 2. Отдельная утилита: SCM Breeze SCM Breeze - это набор shell-скриптов для bash и zsh. Он дает новые возможности работы с Git. Он интегрируется в вашу командную оболочку и добавляет упоминание файла по номеру, индекс репозитория с автодополнением по Tab и многие другие функции. SCM Breeze использует горячие клавиши и псевдонимы (aliases) команд: Ctrl + x, c => git_add_and_commit - добавить выбранные файлы и сделать коммит всех добавленных изменений. Ctrl + x, Space => git_commit_all - сделать коммит всех имеющихся изменений. git add: $ ga 1 git diff: $ gd 2 git reset: $ grs 3 git commit: $ gco 4 3. "Родными" средствами: git add -i git add -i Из Git reference: -i --interactive Добавить содержимое рабочей папки в индекс в интерактивном режиме... Этот режим можно запомнить как -iнтуитивный, поскольку он невероятно понятен и удобен (по крайней мере, для бывалого пользователя Vim). Если не можете выйти из режима добавления, нажмите Return с пустой строкой. Входим в интерактивный режим: Добавляем измененный отслеживаемый файл: Добавляем неотслеживаемый файл: Смотрим на результат: Если вам интересно, что это за консоль/цвета/оформление: iTerm2 + zsh + oh-my-zsh
Комментариев нет:
Отправить комментарий