Как `git bisect` только для коммитов одной ветки?

Ориентационный ученик, который является новичком для Java и / или вложенных классов

Вложенные классы могут быть либо: 1. Статические вложенные классы. 2. Нестатические вложенные классы. (также известный как Внутренние классы) => Пожалуйста, запомните это

1.Интерные классы Пример:

class OuterClass  {
/*  some code here...*/
     class InnerClass  {  }
/*  some code here...*/
}

Внутренние классы - это подмножества вложенных классов:

    Внутренний класс
  • - это определенный тип вложенных классов
  • . Внутренние классы - это подмножества вложенных классов
  • . Вы можете сказать, что внутренний класс также является вложенным классом, но вы не можете сказать, что вложенный класс также является внутренним классом .

Специальность класса Inner:

  • экземпляр внутреннего класса имеет доступ ко всем членам внешнего класса, даже к тем, которые отмечены как «частные "

2.Static Вложенные классы: Пример:

class EnclosingClass {
  static class Nested {
    void someMethod() { System.out.println("hello SO"); }
  }
}

Случай 1: Создание статического вложенного класса из не закрывающего класса

class NonEnclosingClass {

  public static void main(String[] args) {
    /*instantiate the Nested class that is a static
      member of the EnclosingClass class:
    */

    EnclosingClass.Nested n = new EnclosingClass.Nested(); 
    n.someMethod();  //prints out "hello"
  }
}

Случай 2: Создание статического вложенного класса из класса-оболочки

class EnclosingClass {

  static class Nested {
    void anotherMethod() { System.out.println("hi again"); } 
  }

  public static void main(String[] args) {
    //access enclosed class:

    Nested n = new Nested(); 
    n.anotherMethod();  //prints out "hi again"
  }

}

Специальность статических классов:

  • Статический внутренний класс будет иметь доступ только к статические члены внешнего класса и не имеют доступа к нестационарным элементам.

Заключение: Вопрос: В чем основное отличие между внутренним классом и статический вложенный класс в Java? Ответ: просто рассмотрите особенности каждого класса, упомянутого выше.

29
задан Taylan Aydinli 19 December 2013 в 07:08
поделиться

3 ответа

Нет простого способа сделать это без дальнейшей работы. Поработав немного, у меня есть кое-что, что может вам помочь.

git bisect start master f9d5924

for rev in $(git rev-list f9d5924..master --merges --first-parent); do
  git rev-list $rev^2 --not $rev^
done | xargs git bisect skip

Это начинает git bisect с f9d5924 как ваш хороший коммит и master как ваш плохой коммит. Затем он находит предков с правой стороны каждого коммита слияния, которые не находятся на левой стороне. Он передает этих предков в git bisect skip, чтобы пропустить их. Однако, когда он выяснит, какой коммит плохой, он покажет все возможные пропущенные коммиты из плохого коммита слияния. как в следующем

$ git bisect good
There are only 'skip'ped commits left to test.
The first bad commit could be any of:
0622204625d8817c5d8fd1a2a68b3aa91f2dcdf9
0c771566b9e77e3bdc0a66a7404c8eae9f321a68
5098b44f43f84b213eaab110073a6acd26a5cc02
8b05a808d5e15852fbddaa529ba241fdac8ff693
b0c755c3fa57e3c8d527e76fae38bc9925c01353
We cannot bisect more!

В этом случае b0c755c3fa57e3c8d527e76fae38bc9925c01353 был коммит слияния, на котором он не прошел.

Примечание: Это не будет работать, если у вас есть слияние осьминога (слияние, объединяющее более двух ветвей).

21
ответ дан Dan Hulme 19 December 2013 в 07:08
поделиться

Я тоже хотел бы найти правильное и нативное решение этого вопроса, проверяя только коммиты на одной ветви и, таким образом, «обвиняя» весь запрос на слияние и / или извлечение. Однако:

, поскольку коммиты главной ветки являются единственными (предположительно) стабильными, я хочу сделать git bisect только на этой ветке.

Если проблема, вызывающая этот вопрос, заключается в том, что некоторые коммиты, которые вам дают, нарушены и вы не можете их протестировать, вы можете использовать:

git bisect skip

Для пропустите этот коммит полностью и отметьте другой. Это решит проблему, возникшую у вас со сломанными коммитами. Как только вы найдете коммит, который нарушил эту функцию, вы можете проследить его до слияния с отслеживаемой веткой.

Полагаю, вы могли бы git bisect skip ВСЕ коммиты, которые не являются слияниями, либо проверять вручную, либо с помощью скрипта. Это дало бы поведение, заданное в вопросе.

-1
ответ дан pkamb 19 December 2013 в 07:08
поделиться

Чтобы использовать git bisect на одной ветви без проверки на мастеринг:
Будьте на ветви, которую хотите протестировать.

git bisect start --no-checkout

Это приведет к биссектрису только в текущей ветви

Продолжите биссектрику как обычно.

-2
ответ дан Andrew Atkinson 19 December 2013 в 07:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: