Как предотвратить слияние мерзавца для слияния определенного файла от соединительной линии в ответвление и наоборот

Прежде всего, вот код, который должен делать то, что сказал Seelenvirtuose.

List<Double> score = new ArrayList<Double>();

//Add the initial stuff
score.add((double)10);
score.add((double)20);
score.add((double)30);

//Get the input from the user
Scanner in = new Scanner(System.in);

System.out.println("Enter the number: ");
double d = in.nextDouble();

in.close();

//Loop through the list and add the input to the correct places
for(int i = 1; i < score.size(); i+= 2)
    score.add(i, d);

System.out.println(score);`

Score.size () возвращает количество элементов в списке, поэтому в вашем примере, где список изначально содержит 10, 20 и 30, ваш цикл

for (int i = 1; i <= score.size(); i += 2)
{ 
System.out.println("Enter the element you want to add: ");
double addedElement = in.nextDouble();

score.add(i, addedElement); 
}

выглядит следующим образом this:

  1. i = 1, score.size () == 3. Пользователь вводит число, и оно добавляется к месту 1 в списке (от 10 до 20). i + = 2.

  2. i == 3, score.size () == 4. Пользователь вводит другое число и переходит к месту 3 (между 20 и 30). i + = 2.

  3. i == 5, score.size () == 5. Пользователь вводит другое число и переходит к месту 5 (после 30). i + = 2.

  4. i == 7, score.size () == 6. Цикл заканчивается.

Способ, которым вы изменяете Score.size (), заключается в добавлении или удалении элементов. В вашем примере это не должно идти до 10. Надеюсь, это поможет понять.

Наконец, если вы новичок в Java, обратите внимание, что массив (например, double []) и список (например, ArrayList) - это очень разные вещи, даже если они используются для аналогичных целей. Вы можете погуглить их различия, если не знаете.

8
задан 21 April 2009 в 15:36
поделиться

2 ответа

Если я правильно понимаю, вы хотите отложить внесение изменений в упомянутый компонент (назовем его 'C'), пока ваша работа сосредоточена на каком-то другом модуле. Побочным эффектом вашей работы являются незначительные изменения в «C», которые конфликтуют с работой других людей, но вы не хотите хлопот, связанных с объединением «C» каждый раз, когда вы переносите фокус-работу туда, где находится ваш «мастер» является.

AFAIK, набор изменений в git является атомарным и не знает о файлах; поэтому нет способа исключить файл из слияния, если только не разрешить конфликт слияния в пользу ревизии, которую вы предпочитаете.

Возможно, есть и другой выход из вашей ситуации.

Возможно, вы захотите учесть 'C 'в отдельную библиотеку, и иметь для нее отдельный репозиторий git. Ваш проект будет разбит на несколько репозиториев. Но не бойтесь, git позволит вам управлять этим с помощью субмодулей.

Здесь вы найдете для получения подробной информации о том, как это сделать.

Подмодули позволят вам проверить данную ревизию 'C и сфокусировать свою работу на другой части источника. Затем вы можете редактировать, фиксировать и объединять свою работу независимо от изменений, внесенных кем-либо в «C».

Что касается управления параллельными изменениями, обычная позиция с управлением версиями с открытым исходным кодом состоит в том, что VC не заменяет общение с членами команды. Согласитесь с общим подходом к разработке, сведите к минимуму одновременные несовместимые изменения, и процесс разработки станет менее болезненным.

Ознакомьтесь с здесь для получения подробной информации о том, как это сделать.

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

Что касается управления параллельными изменениями, обычная позиция с управлением версиями с открытым исходным кодом состоит в том, что VC не заменяет общение с членами команды. Согласитесь с общим подходом к разработке, сведите к минимуму одновременные несовместимые изменения, и процесс разработки станет менее болезненным.

Ознакомьтесь с здесь для получения подробной информации о том, как это сделать.

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

Что касается управления параллельными изменениями, обычная позиция с управлением версиями с открытым исходным кодом состоит в том, что VC не заменяет общение с членами команды. Согласитесь с общим подходом к разработке, сведите к минимуму одновременные несовместимые изменения, и процесс разработки станет менее болезненным.

и объединяйте свою работу независимо от изменений, которые кто-либо внес в «С».

Что касается управления параллельными изменениями, обычная позиция с управлением версиями с открытым исходным кодом состоит в том, что VC не заменяет общение с членами команды. Согласитесь с общим подходом к разработке, сведите к минимуму одновременные несовместимые изменения, и процесс разработки станет менее болезненным.

и объединяйте свою работу независимо от изменений, которые кто-либо внес в «С».

Что касается управления параллельными изменениями, обычная позиция с управлением версиями с открытым исходным кодом состоит в том, что VC не заменяет общение с членами команды. Согласитесь с общим подходом к разработке, сведите к минимуму одновременные несовместимые изменения, и процесс разработки станет менее болезненным.

3
ответ дан 5 December 2019 в 20:18
поделиться

Я немного поболтал об этом с друзьями и решил поделиться, вдруг вам пригодится.

rebase и merge могут быть не слишком полезны для того, что вы пытаетесь сделать. Более безопасный, простой, скучный и более предсказуемый подход к получению только определённых фрагментов кода или определённых файлов - это использование методов ручного перемещения патчей, предоставляемых git, таких как (а) выбор отдельных коммитов или (б) format-patch и am. Если вам нужно подправить результат (например, удалить файл), сделайте это и объясните причину в новом коммите. Или просто подправьте что-то в процессе отбора или применения патчей. am может быть --interactive, а отбор патчей может быть изменён коммитом --amend.

Я попробовал другой способ с давно существующей веткой: слить всё, а затем вручную вернуть то, что я действительно не хотел сливать. Это тоже сработало отлично.

Ещё одна идея, которая кажется отличной, - использование мелкозернистых ветвей.

Мне кажется, что ключевым выводом является то, что внимание к коду и наличие хороших автоматических тестов, которые проводятся часто, важнее, чем владение определенной стратегией git patch/merge.

0
ответ дан 5 December 2019 в 20:18
поделиться
Другие вопросы по тегам:

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