удаленные файлы вверх по течению отображаются как добавленные в git diff - PullRequest
2 голосов
/ 25 марта 2019

В интерфейсе PR на GitHub я вижу новые изменения, которые я внес в свою ветку в качестве сравнения с основной веткой.

Я хотел бы получить список этих файлов откомандная строка.

Проблема (в командной строке) возникает, когда файл был удален в целевой ветви, с которой я обращаюсь (например, master), но моя ветвь не знает об этом изменении.

  1. Создание репозитория git и добавление файла a в master.
  2. Создание ветки add-b из master и добавление файла b.Не объединяйте.
  3. Переключитесь обратно на master и удалите a.Commit.
  4. Переключитесь обратно на ветку add-b и запустите git diff --name-only --diff-filter=A master, который показывает как a и b как добавленные.

Учитывая, что git checkout master && git merge add-b повторно не добавит файл a в репозиторий, я понимаю, что должен быть какой-то механизм, с помощью которого git это выяснит и представит, что есть способ получить эту информацию.

Какую команду (команды) я должен выполнить, чтобы показывать только добавленные / измененные файлы и избегать тех, которые были удалены в целевой ветви?


Редактировать - пример дляясность

• ~/src/git-testing $$$ git init
Initialized empty Git repository in /Users/ryan.tuck/src/git-testing/.git/
• ~/src/git-testing $$$ touch a && git add . && git commit -m 'add a'
[master (root-commit) f65661b] add a
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 a
• ~/src/git-testing $$$ git checkout -b add-b
Switched to a new branch 'add-b'
• ~/src/git-testing $$$ touch b
• ~/src/git-testing $$$ git add . && git commit -m 'add b'
[add-b 588960f] add b
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 b
• ~/src/git-testing $$$ ls
a b
• ~/src/git-testing $$$ git checkout master
Switched to branch 'master'
• ~/src/git-testing $$$ ls
a
• ~/src/git-testing $$$ rm a && git add . && git commit -m 'remove a'
[master 2b4d9f8] remove a
 1 file changed, 0 insertions(+), 0 deletions(-)
 delete mode 100644 a
• ~/src/git-testing $$$ ls
• ~/src/git-testing $$$ git checkout add-b
Switched to branch 'add-b'
• ~/src/git-testing $$$ git diff --name-only --diff-filter=A master
a
b

1 Ответ

2 голосов
/ 25 марта 2019

Я думаю, что нет волшебства в том, что вы там просите. У master нет файлов, а в add-b есть и a, и b .... поэтому оба файла должны быть добавлены , чтобы разница имела смысл ..... вы боретесь, потому что думаете, что git как-то учитывает историю а и б (файлов) при сравнении веток? Я не думаю, что это так .... не в этом примере, во всяком случае. Возможно, вы хотели бы использовать что-то более похожее на diff, поскольку обе ветви расходились ? Если это так, попробуйте с ...:

git diff master...add-b

Это должно показать вам только добавление b.

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