2015-01-15 1 views
3

Как найти все коммиты, которые имеют заданную фиксацию как родитель?Найти всех прямых потомков данной фиксации

Например, если у меня есть этот Git совершить график,

G H I J 
    \/ \/
    D E F 
     \ |/\ 
     \ |/ | 
     \|/ | 
     B  C 
      \ /
      \/
      A 

Я хотел бы получить список всех прямых потомков B: D, E и F.

+1

Вы ищете «ребенка совершает», а не братья и сестры ... 'D' является ребенком' B', но является братом 'E' –

+0

. Вы абсолютно правы, английский не мой родной язык, а я перепутал слова. Это объясняет, почему Google не мог помочь мне в этом вопросе: D – user2294139

+1

, пожалуйста. FYI: sibling означает «брат или сестра» –

ответ

1

Вы можете использовать мерзавца rev-list --parents и отфильтровать детей родителей с grep и awk

git rev-list --all --parents | grep "^.\{40\}.*<PARENT_SHA1>.*" | awk '{print $1}' 

Заменить <PARENT_SHA1> с SHA-1 хэш вашего B фиксации.

+0

Почему бы не использовать одинарные кавычки для средней части и сохранить обратную косую черту для ускорения фигурных скобок? Легче читать, даже короче и несколько «безопаснее» при расширении. –

+0

@ DanielBöhmer http://stackoverflow.com/questions/26783219/grep-and-regex-why-am-i-escaping-curly-braces –

+0

О, спасибо вам большое за то, что помогли мне! Я действительно ожидал, что 'bash' будет обрабатывать фигурные скобки специально даже внутри двойных кавычек. –