Arhn - архитектура программирования

Настройте gccemacs и emacs — нужны ли мне для этого два локальных репозитория git?

Гит новичок. Я нахожу Git потрясающим, но я не полностью его понимаю.

Я клонировал репозиторий GNU Emacs локально (git clone https://github.com/emacs-mirror/emacs.git ~/src/emacs)

Я вижу, что у него есть две ветки — master и feature/native-comp.

Я пытаюсь создать обе главные ветки (git checkout master && autogen.sh && make)

а также ветку native-comp (функция git checkout/native-comp && autogen.sh && make)

Сохраняет ли git скомпилированные объекты, разделенные двумя ветвями, или мне нужно клонировать исходный код emacs в два уникальных каталога в моей локальной системе?

23.01.2021

Ответы:


1

мне нужно клонировать исходный код emacs в два уникальных каталога в моей локальной системе?

Нет, но вам нужны нужны — или, по крайней мере, хотите — два рабочих дерева или рабочих деревьев (мне нравится чтобы использовать более короткое имя, большая часть документации Git в основном использует более длинную форму из двух слов без дефиса).

Два клона дадут два рабочих дерева, так что вы можете сделать это таким образом. Другой способ — использовать git worktree add, если у вас Git 2.5 или новее (предпочтительно 2.15 или новее).

Сохраняет ли git скомпилированные объекты, разделенные двумя ветвями...

Нет. В частности, файлы, с которыми вы работаете — как извлеченные из какого-либо коммита с помощью git checkout или git switch, так и созданные в процессе сборки — находятся вне репозитория Git. правильно. Они находятся в вашем рабочем дереве или рабочем дереве (два способа сказать одно и то же). Эти файлы на самом деле вообще не находятся в Git.

Когда вы используете git checkout или git switch для выбора коммита, Git:

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

Это удаление и добавление допустимо, если у вас нет несохраненной работы в различных файлах, которые Git перезапишет или удалит в процессе.

Обратите внимание, что создать продукты из какой-либо другой, более ранней проверки — это просто неотслеживаемые файлы: файлы, которые вы или какая-либо программа, которую вы запустили, поместили в ваше рабочее дерево (это ваш, так что вы можете поместить в него все, что вам нравится), о котором Git ничего не знает. Они не появились в результате какого-то коммита, и если вы переключитесь с этого коммита на какой-то другой, их не нужно удалять,1, поэтому их и не будет.

Если вы хотите работать с двумя разными коммитами одновременно, вам нужны две разные рабочие области, в которых можно работать с файлами, извлеченными из этих двух разных коммитов. Поскольку один репозиторий поставляется с одним начальным рабочим деревом (и одним индексом, также известным как промежуточная область, также известным как кэш), вам нужно либо два репозитория, либо git worktree add код, впервые появившийся в Git 2.5. Используя git worktree add, вы можете добавить вторую пару индекс-и-рабочее дерево со вторым HEAD, которое идет с ним, и использовать его для проверки какого-то второго коммита.

В нем было несколько неприятных ошибок, которые не были исправлены до Git 2.15. Если вы просто быстро взглянете на какой-то коммит, ошибки не будут кусаться. Они кусаются, когда вы делаете дополнительное рабочее дерево и выполняете в нем какую-то работу и оставляете его на две недели или больше. (Это случилось со мной. К счастью, я действительно закончил с добавленным рабочим деревом и смог просто удалить его.)


1Обратите внимание, что из этого правила есть исключение. Предположим, вы находитесь на каком-то коммите c123456 или что-то в этом роде. В этом коммите нет файла с именем README.md. Вы создаете свой собственный README.md, так что теперь он не отслеживается. Затем вы решаете, что хотите проверить коммит fedcba9 или что-то еще, но этот коммит действительно содержит файл README.md. Git будет жаловаться, что ему придется перезаписать ваш неотслеживаемый файл README.md в вашем рабочем дереве, чтобы извлечь коммит fedcba9.

24.01.2021
  • Спасибо, торек! 26.01.2021
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..