Ответ 1
Изменения в рабочем процессе LaTeX:
Первым шагом в эффективном управлении рабочим процессом git + латекса является внесение нескольких изменений в ваши привычки LaTeX.
-
Для начала напишите каждое предложение на отдельной строке. Git был записан в исходный код контроля версий, где каждая строка отличается и имеет конкретную цель. Когда вы пишете документы в LaTeX, вы часто думаете в терминах абзацев и записываете их как свободно распространяющийся документ. Однако в git изменения одного слова в абзаце записываются как изменение ко всему абзацу.
Одним из решений является использование
git diff --color-words
(моего ответа на аналогичный вопрос, где я показываю пример). Однако я должен подчеркнуть, что разделение на отдельные строки - намного лучший вариант (я упомянул об этом только в этом ответе), поскольку я обнаружил, что он приводит к очень минимальным конфликтам слияния. -
Если вам нужно посмотреть на diff кода, используйте Git native diff. Чтобы увидеть разницу между двумя произвольными коммитами (версиями), вы можете сделать это с помощью
sha
каждого из коммитов. Подробнее см. , а также этот вопросС другой стороны, если вам нужно посмотреть на отличие отформатированного вывода, используйте
latexdiff
, который является отличной полезностью ( написанный в perl), который берет два латексных файла и производит аккуратный различный вывод в формате pdf (источник изображения):Вы можете комбинировать
git
иlatexdiff
(плюсlatexpand
при необходимости) в одной команде, используя git-latexdiff (например,git latexdiff HEAD^
, чтобы просмотреть разницу между вашей рабочей и последней транзакцией). -
Если вы пишете длинный документ в латексе, я предлагаю разделять разные главы в свои собственные файлы и называть их в основном файле с помощью команды
\include{file}
. Таким образом, вам легче редактировать локализованную часть вашей работы, а также проще управлять версиями, так как вы знаете, какие изменения были внесены в каждую главу, вместо того, чтобы анализировать ее из журналов одной большой файл.
Эффективное использование Git:
-
Использовать ветки!. Возможно, лучшего совета я не могу дать. Я нашел ветки очень полезными для отслеживания "разных идей" для текста или для "разных состояний" работы. Разветвление
master
должно быть вашим основным телом работы, в его самом текущем состоянии "готово к публикации", т.е. Если из всех ветвей, если есть тот, на котором вы готовы наложить свое имя на него, это должно быть мастер-ветвь.Филиалы также чрезвычайно полезны, если вы аспирант. Как будет свидетельствовать любой студент-градиент, советник должен иметь многочисленные исправления, большинство из которых вы не согласны. Тем не менее, вы, возможно, ожидаете, что измените их пока, даже если они вернутся позже после обсуждений. Поэтому в таких случаях вы можете создать новую ветвь
advisor
и внести изменения по своему вкусу, в то же время поддерживая собственную ветвь развития. Затем вы можете объединить два и вишневый, что вам нужно. -
Я также предлагаю разбивать каждый раздел на другую ветку и фокусировать только раздел, соответствующий ветке, в которой вы находитесь. Создавайте ветку при создании нового раздела или фиктивных разделов, когда вы делаете свою первоначальную фиксацию (ваш выбор, действительно). Сопротивляйтесь желанию отредактировать другой раздел (скажем, 3), когда вы не находитесь на его ветке. Если вам нужно отредактировать, сделайте это, а затем проверите другое перед ветвлением. Я нахожу это очень полезным, потому что он сохраняет историю раздела в своей ветке, а также говорит вам с первого взгляда (с дерева), сколько лет какой-то раздел. Возможно, вы добавили материал в раздел 3, который требует подстройки к разделу 5... Конечно, это, по всей вероятности, будет наблюдаться во время тщательного чтения, но я считаю полезным взглянуть на это с первого взгляда, чтобы я мог переключитесь, если мне становится скучно в секции.
Вот пример моих ветвей и сливается с недавней статьей (я использую SourceTree для OS X и Git из командной строки в Linux). Вы, вероятно, заметите, что я не самый часто встречающийся комминант в мире, и я не оставляю полезные комментарии все время, но у вас нет причин не следовать этим хорошим привычкам. Основное сообщение о выезде - это то, что полезно работать в ветких. Мои мысли, идеи и развитие протекают нелинейно, но я могу отслеживать их через ветки и объединять их, когда меня это удовлетворяет (у меня также были другие ветки, которые больше нигде не были удалены). Я могу также "пометить" фиксации, если они что-то означают (например, первоначальные представления в журналы/пересмотренные материалы/и т.д.). Здесь я помечен как "версия 1", в которой проект находится на данный момент. Дерево представляет собой неделю работы.
-
Еще одна полезная вещь - сделать широкомасштабные изменения документа (например, меняя
\alpha
на\beta
везде) самостоятельно. Таким образом, вы можете отменить изменения без необходимости откатывать что-то еще вместе с ним (есть способы сделать это с помощью git, но эй, если его можно избежать, то почему бы и нет?). То же самое касается дополнений к преамбуле. -
Используйте дистанционное репо и регулярно нажимайте свои изменения вверх по течению. С бесплатными поставщиками услуг, такими как github и bitbucket (последний даже позволяет создавать частные репозитории со свободной учетной записью), нет причин не использовать их, если вы работаете с git/mercurial. По крайней мере, рассмотрите его как дополнительную резервную копию (надеюсь, у вас есть основной) для ваших латексных файлов и службы, которая позволяет продолжить редактирование с того места, где вы оставили на другой машине.