2015-02-12 2 views
0

Скажем, я работаю над проектом в следующем порядке:Как Github генерирует небольшие различия в ветвях?

  1. мастер Fork расшириться под названием ОТРАСЛЬ-A
  2. Merge ОТРАСЛЬ-B освоить
  3. Merge ОТРАСЛЬ-C освоить
  4. Do некоторые работы по ОТРАСЛИ-A и отправить запрос на нагрузочный

Теперь, если я проверка ОТРАСЛЬ-A локально и запустить git diff master, то разница будет включать в себя файлы из ОТРАСЛИ-B и ОТРАСЛИ-C, который находятся у хозяина, но не в моей ветке.

Однако, если я проверяю тот же diff на Github, он исключает изменения из BRANCH-B и BRANCH-C при генерации списка измененных файлов и визуального разграничения.

Как Github генерирует этот diff? Как я могу воспроизвести его в командной строке?

ответ

1

Вы можете создать различия между точкой, где ветвь была разветвленная из [1] и нынешнего глава филиала by separating both names with three dots: git diff master...a

Сравнить:

[[email protected]/t/test (a)]git diff master..a 
diff --git a/a b/a 
new file mode 100644 
index 0000000..e69de29 
diff --git a/a2 b/a2 
new file mode 100644 
index 0000000..e69de29 
diff --git a/b b/b 
deleted file mode 100644 
index e69de29..0000000 
diff --git a/c b/c 
deleted file mode 100644 
index e69de29..0000000 

[[email protected]/t/test (a)]git diff master...a 
diff --git a/a b/a 
new file mode 100644 
index 0000000..e69de29 
diff --git a/a2 b/a2 
new file mode 100644 
index 0000000..e69de29 

[1] Это «самый новый» общий предок и может быть получен через: git merge-base master a. Вы также могли бы использовать git diff $(git merge-base master a) для достижения того же эффекта, что и три точки.

+0

Уход! Спасибо, что поделился! –

Смежные вопросы