Как установить каталог хранения исходного каталога при создании git init --bare?

Я использовал git init --bare для создания голого репозитория в Linux, но я хочу одновременно установить его местоположение в исходном каталоге, чтобы, хотя голый репозиторий сохранял только записи коммитов git, я мог сделать это непосредственно в Linux. Найдите исходный код.

Когда вы пишете «исходный каталог», вы имеете в виду рабочее дерево? (Если так, то в голом репозитории нет рабочего дерева, в этом и смысл --bare.)

Romain Valeri 12.06.2019 10:32

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

user11409857 12.06.2019 10:36
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
261
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В голом репо нет рабочего дерева по умолчанию, но вы можете добавить одно или столько, сколько хотите.

Если вы создаете голое репо с нуля, у него еще нет коммита. Вам нужно либо отправить коммиты из другого репозитория, либо создать хотя бы один в голом репо.

# 1. push from another repository "bar"
cd /path/to/bar
git push /path/to/foo master

# add a worktree for "master"
cd /path/to/foo
git worktree add /path/to/worktree master

# ------------------------------------------------

# 2. create commit from the bare repository "foo"
cd /path/to/foo

# create the empty tree
tree=$(git hash-object -w -t tree --stdin < /dev/null)

# create a commit from the tree
commit=$(git commit-tree -m "initial commit" $tree)

# create "master" from the commit
git update-ref refs/heads/master $commit

# add a worktree for "master"
git worktree add /path/to/worktree master

Но теперь, если вы клонируете /path/to/foo и делаете коммиты, а затем возвращаете master обратно в /path/to/foo, статус в рабочем дереве /path/to/worktree будет немного странным. Вам нужно запустить git reset --hard в /path/to/worktree, чтобы обновить его статус и код.

Помимо рабочего дерева, вы также можете сделать клон из /path/to/foo.

git clone /path/to/foo worktree
cd worktree
# checkout branch "master", which should be already checked out by default
git checkout master
# update "master"
git pull origin master
# update other branches
git fetch
# checkout a new branch "dev" which has been pushed to /path/to/foo
git checkout dev

Другие вопросы по теме