Подтвердить что ты не робот

Показывать коммиты с момента создания ветки

Есть ли способ увидеть с помощью git log или какой-либо другой команды только коммиты, которые были добавлены после создания ветки?

usage: git log [<options>] [<since>..<until>] [[--] <path>...]
   or: git show [options] <object>...

    --quiet               suppress diff output
    --source              show source
    --decorate[=...]      decorate options
4b9b3361

Ответ 1

Используйте три периода для ссылки на фиксацию, при которой вторая ветвь отклоняется от первой, или в этом случае ваша ветка отклоняется от ведущего:

git log master...<your_branch_name>

Обязательно используйте три для этого случая.

Боковое примечание: Вы также можете оставить свое имя ветки, поскольку git автоматически ссылается на указатель HEAD в этом случае, например:

git log master...

эквивалентен моему предыдущему примеру. Это работает везде, где доступно сравнение фиксации.

Ответ 2

Полная документация находится здесь: https://www.kernel.org/pub/software/scm/git/docs/gitrevisions.html

Предположим, что у вас есть репо, которое выглядит так:

base  -  A  -  B  -  C  -  D   (master)
                \
                 \-  X  -  Y  -  Z   (myBranch)

Проверьте статус репо:

> git checkout master
Already on 'master'
> git status ; git log --oneline
On branch master
nothing to commit, working directory clean
d9addce D
110a9ab C
5f3f8db B
0f26e69 A
e764ffa base

и для myBranch:

> git checkout myBranch
> git status ; git log --oneline
On branch myBranch
nothing to commit, working directory clean
3bc0d40 Z
917ac8d Y
3e65f72 X
5f3f8db B
0f26e69 A
e764ffa base

Предположим, вы находитесь на myBranch, и вам нужны только изменения SINCE master. Используйте двухточечную версию:

> git log --oneline master..myBranch
3bc0d40 Z
917ac8d Y
3e65f72 X

Трехточечная версия дает все изменения от кончика мастера до конца myBranch. Однако обратите внимание, что общий фиксатор B не включен:

> git log --oneline master...myBranch
d9addce D
110a9ab C
3bc0d40 Z
917ac8d Y
3e65f72 X

ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ: git log и git diff РАЗЛИЧНЫ! Поведение не совсем противоположно, но почти:

> git diff master..myBranch
diff --git a/rev.txt b/rev.txt
index 1784810..e900b1c 100644
--- a/rev.txt
+++ b/rev.txt
@@ -1 +1 @@
-D
+Z

> git diff master...myBranch
diff --git a/rev.txt b/rev.txt
index 223b783..e900b1c 100644
--- a/rev.txt
+++ b/rev.txt
@@ -1 +1 @@
-B
+Z

Итак, двухточечная версия показывает diff от вершины мастера (то есть D) до кончика myBranch (Z). Трехточечная версия показывает отличие от базы myBranch (то есть B) до конца myBranch (Z).

Ответ 3

Если вы работаете в ветке, которую вы создали:

git log master..

Ответ 4

Да, возможно сравнить вашу "новую" ветку с главной ветвью (обычно называемой "master" ):

git log master..<your_branch_name>

Конечно, замените <your_branch_name>.