Как посмотреть через терминал, в каких проектах нужно делать коммиты и пушить в репозиторий?

Бывает такое, что на работе за день приходится выполнять какие-то задачи в несколько проектах. А также я храню настройки для системы базу знаний на bitbucket. И когда много репозиторий на машине, легко можно забыть что-то запушить.

Я работаю в убунту и хотелось бы через терминал в конце рабочего дня запустить команду, которая бы проверила все проекты, если не остались среди них незапушенные.

К сожалению я не силен в баш скриптах. Может у кого уже имеется готовый скрипт. Буду признателен за помощь.


Ответы (2 шт):

Автор решения: aleksandr barakin

что-нибудь вроде такого:

$ find ~ -type d -name .git | while read p; do (cd "$p"/..; git status --porcelain --branch | grep -q ahead && dirname "$p"); done

команда ищет в вашем домашнем каталоге репозитории, т.е. каталоги с именем .git, для каждого из найденных:

  1. делает текущим каталог на один уровень выше (там обычно и располагается «work tree» — рабочий каталог)
  2. проверяет наличие строки ahead в выводе git status --porcelain --branch
  3. при её наличии выдаёт имя каталога в stdout

по поводу опций команды status.

пример вывода (если имеется неотправленный в общее хранилище коммит):

$ git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean

эту информацию можно получить в более удобном для обработки виде:

$ git status --porcelain --branch 
## master...origin/master [ahead 1]

вот наличие строки ahead как раз и стоит проверять.


доп. чтение: $ man git-status


обновление. каюсь, проглядел эти слова в заголовке: «в каких проектах нужно делать коммиты» и сосредоточился только на тексте вопроса, где речь только про невыполненную команду push.

проверить, нет ли модифицированных файлов, можно практически той же командой, только заменить

git status --porcelain --branch | grep -q ahead

на

git status --porcelain | grep -q .
→ Ссылка
Автор решения: Ivan

на мой взгляд можно просто поставить тему, например powerlevel10k

или любую другую с поддержкой git и не писать лишние команды

→ Ссылка