Показывать коммиты с момента создания ветки
Есть ли способ увидеть с помощью git log
или какой-либо другой команды только коммиты, которые были добавлены после создания ветки?
usage: git log [<options>] [<since>..<until>] [[--] <path>...]
or: git show [options] <object>...
--quiet suppress diff output
--source show source
--decorate[=...] decorate options
Ответы
Ответ 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>
.