Как я нахожу общие файлы измененными между ответвлениями мерзавца?

Большинство приведенных выше ответов описывают, что такое Y-комбинатор , но не то, что он для .

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

Изучение комбинаторов с фиксированной запятой также помогло мне понять функциональное программирование. Я никогда не нашел их применения в реальном программировании.

5
задан Mike Pape 24 June 2009 в 14:03
поделиться

2 ответа

Немного расширено: для первой части вопроса создайте новый ветвь, автоматически выполните перебазирование там, а затем сравните с вашей рабочей копией.

git branch workBranch
git commit #throw your locals into your own branch for a brief moment
git branch testBranch
git rebase otherBranch
git diff workBranch

Вы также можете уйти, просто выполнив "git diff origin / branchToMerge"

Для интерактивной части:

git rebase --interactive.

Установите все коммиты в "Редактировать" и вы Я буду проходить через каждый из них один за другим, давая вам возможность увидеть все, что сделано для этого коммита, и отредактировать, сколько душе угодно.

РЕДАКТИРОВАТЬ, чтобы ответить на комментарий

Хорошо, для точного просмотра измененных файлов выполните:

git log a0a0a0..b1b1b1 --name-only --pretty=oneline | egrep -v '^[a-f0-9]{40} ' | sort | uniq > lista
git log a0a0a0..c2c2c2 --name-only --pretty=oneline | egrep -v '^[a-f0-9]{40} ' | sort | uniq > listb
cat lista listb | sort | uniq -d

Этот бит оболочки kludgery покажет вам только файлы, которые были изменены в обоих журналах. Для a0a0a0 используйте общую точку. Замените струны b1 / c2 кончиками двух расходящихся ветвей.

4
ответ дан 18 December 2019 в 09:52
поделиться

Вывод списка измененных файлов

Поскольку перебазирование / слияние может занять много времени, лучше избегать ненужного. Есть несколько способов узнать, что было изменено, в зависимости от того, какая информация вам нужна.

Если вам интересно знать, какие файлы были изменены при каждой фиксации, я бы предложил git-log :

git log [--pretty=<format>] --name-only <common-branch>..<local-branch>

Вы можете использовать опцию - pretty , чтобы получить необходимую информацию заголовка; может быть множеством вариантов, включая настраиваемую строку с полями - см. Дополнительную информацию на странице руководства.

Параметр - только имя фактически используется передается в git-diff , поэтому, если вас не волнуют результаты каждой фиксации, вы можете сразу перейти к источнику:

git diff --name-only <common-branch> <local-branch>

Обратите внимание, что ветви указаны по-разному для двух команд.

Вы также можете применить это к восходящим изменениям, изменив на , и в итоге получаются два списка файлов. Я оставлю это на ваше усмотрение, чтобы решить, как вы хотите их сравнивать, хотя опция -f команды grep может быть удобна ...

Ручное слияние

Автократия превзошла меня в этом. Если вы выполнили некоторую интеллектуальную обработку на основе вывода git-log , вы можете редактировать только те коммиты, которые вы видели, с перекрывающимися изменениями файлов. Если бы вы выполняли слияние, а не ребазирование, вы бы использовали параметр - no-commit .

См. Также раздел конфигурации на странице руководства git-merge . Вы можете установить merge.conflictstyle на diff3, чтобы вы могли видеть исходный текст, а также изменения с обеих сторон.

Если вы действительно отчаянно пытаетесь подавить все попытки автоматического разрешения конфликтов, я считаю, что вы могли бы подключить фиктивный mergetool (через merge.tool и mergetool.cmd), который ничего не делает и возвращает ошибку.

Сказав все это, я должен также сказать, что из своего опыта с git merges я видел множество конфликтов, но не могу вспомнить ни одного неправильного автоматического слияния. Я лично верю, что это возможности слияния. Проверить это после действительно должно быть много.

Сказав все это, я должен также сказать, что из своего опыта с git merges я видел множество конфликтов, но не могу вспомнить ни одного неправильного автоматического слияния. Я лично верю, что это возможности слияния. Проверить это после действительно должно быть много.

Сказав все это, я должен также сказать, что из своего опыта с git merges я видел множество конфликтов, но не могу вспомнить ни одного неправильного автоматического слияния. Я лично верю, что это возможности слияния. Проверить это после действительно должно быть много.

12
ответ дан 18 December 2019 в 09:52
поделиться
Другие вопросы по тегам:

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