Статус локального репо в git

Приветсвую.

Вот что интересует. Когда я работаю с svn, я четко могу видеть статус своей working copy — dirty или нет. В гите с бранчами такого я не нашел.

Т.е. Допустим у меня есть working copy, я создал из нее два бранча, покомитил в каждый изменения различные, уехал на неделю, приехал и мне надо пушнуть мои чейнджи в центральный репозиторий команды.

Как я могу узнать, что у меня есь неопубликованные изменения в своем локальном репозитофрии, которые ждут комита. Показывают ли такую инфу тулы типа tortoisegit, ideaвский плагин для гита?

Спасибо.
  • Вопрос задан
  • 4180 просмотров
Решения вопроса 1
denver
@denver
Чтобы узнать что еще не запушено (для ветки develop):
git log origin/develop..

Чтобы узнать все что еще не запушано во всех ветках:
git log --branches --decorate --not --remotes=origin
# или поменьше воды, побольше инфы:
# git log --branches --decorate --not --remotes=origin --name-status --oneline

Чтобы узнать что еще не скачано (для ветки develop):
git fetch
git log ..origin/develop
# или поменьше воды, побольше инфы:
# git log ..origin/develop --name-status --oneline

Для простоты можно создать себе алиасы git in / git out:
git config --global alias.in '!git remote update -p; git log ..@{u}'
git config --global alias.out 'log @{u}..'

@{u} — (только в git 1.7+) переменная ссылающаяся на удаленную ветку для текущей ветки
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
@Infernal
git branch --no-merged покажет те ветки, в которых есть коммиты, не слитые с текущей. git status покажет те изменения в рабочей директории, которые ждут коммита + количество коммитов, не синхронизированное с remote репозиторием (при условии ваша локальная ветка трекает удаленную)
Ответ написан
Комментировать
gooddy
@gooddy
Если *nix/mac можно притулить github.com/djl/vcprompt в PS$ и будет показываться что-то типо такого, в текущей директории

image

видно сразу какая система контроля версий, текущий бранч и там ещё несколько полезных параметров формата вывода…
Ответ написан
Комментировать
ultimate_darkness
@ultimate_darkness
Можно написать git diff --stat origin/master и получить список измененных файлов.
Ответ написан
opium
@opium
Просто люблю качественно работать
Мне кажется методология работы с гитом у вас в голове сформировалась не правильно.
На мой взгляд все должно быть так
1)коммитишь все что можно в локальную ветку репозитория.
2)пушишь на основную дев ветку в которую пушат все разработчики.
3)если пуш конфликтный делаешь на себя пул и разруливаешь конфликты, потом снова шаг 2.
это без учета что есть ветки отдельные для определенных фич, но там примерно такая же ситуация.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы