Большинство приведенных выше ответов описывают, что такое Y-комбинатор , но не то, что он для .
Комбинаторы с фиксированной запятой используются, чтобы показать, что лямбда-исчисление завершено . Это очень важный результат в теории вычислений и обеспечивает теоретическую основу для функционального программирования .
Изучение комбинаторов с фиксированной запятой также помогло мне понять функциональное программирование. Я никогда не нашел их применения в реальном программировании.
Немного расширено: для первой части вопроса создайте новый ветвь, автоматически выполните перебазирование там, а затем сравните с вашей рабочей копией.
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 кончиками двух расходящихся ветвей.
Поскольку перебазирование / слияние может занять много времени, лучше избегать ненужного. Есть несколько способов узнать, что было изменено, в зависимости от того, какая информация вам нужна.
Если вам интересно знать, какие файлы были изменены при каждой фиксации, я бы предложил 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 я видел множество конфликтов, но не могу вспомнить ни одного неправильного автоматического слияния. Я лично верю, что это возможности слияния. Проверить это после действительно должно быть много.