Поведение по умолчанию для git diff заключается в открытии каждого файла сравнения по порядку (дождитесь закрытия предыдущего файла, прежде чем открывать следующий файл).
Я ищу способ открыть все файлы одновременно - в BeyondCompare, например, это открыло бы все файлы во вкладках в одном и том же окне BC.
Это облегчит рассмотрение сложного набора изменений; пролистывайте файлы diff и вперед и игнорируйте неважные файлы.
Ответы:
Начиная с
git
v1.7.11, вы можете использоватьgit difftool --dir-diff
для выполнения директории diff.Например, эта функция хорошо работает с Meld 3.14.2 и позволяет просматривать все измененные файлы:
Это удобная функция Bash:
Следующий ответ относится к
git
установкам старше v1.7.11.Этот же вопрос был задан в списке рассылки git .
Я собрал сценарий оболочки на основе этого потока электронной почты, который выполняет директорию diff между произвольными коммитами.
Начиная с git v1.7.10,
git-diffall
скрипт включен вcontrib
стандартную установку git.Для версий до v1.7.10 вы можете установить из
git-diffall
проекта на GitHub .Вот описание проекта:
источник
git difftool --dir-diff
Beyond Compare): я связался с Scooter Software (авторами Beyond Compare), и они сказали, чтоbcompare.exe
это не поддерживаемое решение и может вызвать проблемы, если одновременно открыто более одного открытия. Они планируют добавить поддержку различий папокbcomp.exe
в будущей версии (тем временем я продолжу использоватьbcompare.exe
в качестве неподдерживаемого обходного пути).--dir-diff
прекрасно работает с Мелдом. Оттуда он позволит вам выбирать и просматривать различия для отдельных файлов.Вот что я остановился на ...
Скопируйте следующий код в файл с именем
git-diffall
(без расширения):Поместите файл в
cmd
папку вашего каталога git install (напримерC:\Program Files (x86)\Git\cmd
)И используйте как вы
git diff
:Примечания. Ключом к нему является & param, который указывает внешней команде diff запускаться в фоновом режиме, чтобы файлы обрабатывались немедленно. В случае BeyondCompare это открывает один экран с каждым файлом в отдельной вкладке.
источник
"$filename"
на"../$filename"
. Тогда это отлично работало с Beyond Comparegit-diffall
файла вC:\Program Files\Git\cmd
папку? Я сделал именно так, как было$ git diffall git: 'diffall' is not a git command. See 'git --help'. Did you mean this? difftool
meld
имеет удобную функцию: если вы дадите ему каталог под управлением исходного кода (Git, Mercurial, Subversion, Bazaar и, возможно, другие), он автоматически выведет список всех измененных файлов, и вы сможете дважды щелкнуть, чтобы просмотреть индивидуальные различия.IMO гораздо проще набрать
meld .
и заставить его выяснить VCS, чем настроить VCS для запускаmeld
. Кроме того, вы можете использовать одну и ту же команду независимо от того, какую VCS использует ваш проект, и это здорово, если вы часто переключаетесь между ними.Единственный недостаток - медленнее сканировать изменения, чем передавать изменения из git / hg / svn, хотя то, насколько он медленный, чтобы быть проблемой, будет зависеть от того, как вы его используете, я уверен.
источник
git diff
не предлагаются.Я нашел этот метод (GitDiff.bat и GitDiff.rb), который копирует файлы в старые / новые временные каталоги, а затем сравнивает их по папкам.
Но я бы предпочел просматривать рабочие файлы напрямую (из рабочего каталога), поскольку у BeyondCompare есть удобная функция, позволяющая редактировать файл из окна diff, что отлично подходит для быстрой очистки.
Изменить: аналогичный метод здесь в ответ на мой вопрос в списке рассылки git.
источник
git meld
=> https://github.com/wmanley/git-meld - это потрясающий скрипт, который откроет аккуратный diff всех файлов в одном окне.источник
Здесь замечено, что у Araxis Merge есть опция команды -nowait:
Может быть, это возвращает код немедленного выхода и будет работать, кто-нибудь испытал это? Не могу найти похожую опцию для BeyondCompare ...
источник
Diffuse также имеет интеграцию с VCS. Он взаимодействует с множеством других VCS, в том числе SVN, Mercurial, Bazaar, ... Для Git, он даже покажет три панели, если некоторые, но не все изменения поставлены. В случае конфликтов будет даже четыре панели.
Вызвать его с
в вашей рабочей копии Git.
Если вы спросите меня, лучшее визуальное отличие, которое я видел за десятилетие. (И я тоже попробовал смесь.)
источник
Если все, что вы хотите сделать, это открыть все файлы, которые в данный момент изменены, попробуйте что-то вроде:
Если вы делаете коммиты «сложных наборов изменений», вы можете пересмотреть свой рабочий процесс. Одна из действительно приятных особенностей git - это то, что разработчик может легко сводить сложные наборы изменений к серии простых патчей. Вместо того, чтобы пытаться редактировать все файлы, которые в данный момент изменены, вы можете посмотреть
что позволит вам выборочно ставить куски.источник
Я написал скрипт powershell, который будет дублировать два рабочих дерева и сравнивать их с DiffMerge. Так что вы можете сделать:
Например, чтобы сравнить основную ветку три проверки назад с текущим рабочим деревом.
Это блестящий и новый и, вероятно, полный ошибок. Недостатком является то, что файлы в вашем рабочем дереве, которые еще не были добавлены, копируются в оба рабочих дерева. Это также может быть медленным.
http://github.com/fschwiet/GitNdiff
источник
Для тех, кто заинтересован в использовании git-diffall на Mac OS X с Araxis, я разработал проект git-diffall на github и добавил AppleScript, заключающий в себе команду Araxis Merge. Примечание. Это слегка измененный клон
araxisgitdiff
файла, который поставляется вместе с Araxis Merge для Mac OS X.https://github.com/sorens/git-diffall
источник
Следующие работы с meld и kdiff3
Открывает все файлы в окне, которое вы можете легко просматривать. Может использоваться с наборами изменений вместо происхождения / имени филиала
например:
git difftool --dir-diff origin/master..24604fb72f7e16ed44115fbd88b447779cc74bb1
источник
Вы можете использовать Gitk и увидеть все различия одновременно
источник