Как определить, были ли последние изменения в каталоге - PullRequest
1 голос
/ 21 октября 2019

В настоящее время у меня есть проект git со структурой:

z.txt
foo/a.txt
foo/b.txt

, используя bash, как я могу определить после выполнения $ git pull, что либо a.txt и / или b.txt (то есть что-нибудь под foo каталог) были изменены?

Ответы [ 2 ]

2 голосов
/ 21 октября 2019

A. Если вы уже потянули

git diff

Вы можете использовать git diff, а именно:

  • git diff commit1..commit2 --name-only;или
  • git diff commit1..commit2 --name-status

Следующие описания относятся к doco .

- только имя

Показывать только имена измененных файлов.

- name-status

Показывать только имена и статус измененных файлов. См. Описание параметра --diff-filter о значении букв состояния.


git pull сообщает вам идентификаторы коммитов, которые он объединяет / fast-forwards:

/mnt/c/git/repo666 (develop)>git pull
Updating f86907f7a..a708dcfe8

В этом случае команда будет выглядеть следующим образом:

git diff f86907f7a..a708dcfe8 --name-status

git log

Чтобы увидеть различия в коммите, вы можете использовать git log с --name-only или --name-status.

B. Перед извлечением

Если вы не потянули и хотите посмотреть на возможные изменения, вы можете git fetch ветвь (не pull) и сравнить локальную копию удаленной ветки с вашей текущей веткой.

/mnt/c/git/repo666(develop)>git fetch // not git pull
(...)
/mnt/c/git/repo666(develop)>git status
On branch develop
Your branch is behind 'origin/develop' by 3 commits, and can be fast-forwarded.
  (use "git pull" to update your local branch)

nothing to commit, working tree clean
/mnt/c/git/Platform (develop)>git diff develop origin/develop --name-status

(Обратите внимание, что я использовал git diff branch origin/branch, а не git diff origin/branch, чтобы он отображался в нужном порядке, т.е. если файл был добавлен в origin/develop, мы хотим, чтобы он был добавленне удаляется.)


Примечание по git pull output

Обратите внимание, что вывод git pull содержит добавленные и переименованные файлы дважды

Fast-forward
 ...
 src/Folder1/Services/File1.cs                                      |   30 +
 src/Folder1/Services/File2.cs                                      |    7 +
 ...
 src/Folder1/ViewModels/XViewModel.cs                               |    8 +-
 ...
 src/{Abc.Common/Services => Abc/Contracts/Area1}/Area1File1.cs     |    7 +-
 ...
 89 files changed, 7254 insertions(+), 4897 deletions(-)
 create mode 100644 src/Folder1/Services/File1.cs
 create mode 100644 src/Folder1/Services/File2.cs
 ...
 rename src/{Abc.Common/Services => Abc/Contracts/Area1}/Area1File1.cs (83%)
 ...
0 голосов
/ 21 октября 2019

Мы можем приблизиться к тому, что предлагает @tymtam, если вы готовы что-то сделать до запуска git pull.

Получите SHA для вашей текущей головы и сохраните его:

sha="$(git rev-parse HEAD)"

Далее выполните команду pull:

git pull

Наконец, сравните foo на вашем новом HEAD с тем, что у вас было раньше:

git diff --stat $sha -- foo

Обратите внимание, если вы не отправилиизменения, они будут включены в отчеты git diff, поэтому вы всегда можете запустить git stash перед командой diff, чтобы скрыть их, а затем git stash pop, чтобы вернуть их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...