Возможно ли, чтобы Git remote был местоположением на самом компьютере, а не в сетевом местоположении?

#git

#git

Вопрос:

До сих пор я видел, что git remote находится в сети. Возможно ли, чтобы это было местоположение на самом компьютере, например, на другом диске или в другом каталоге? Если да, то как?

Ответ №1:

https://git-scm.com/docs/git-pull#_git_urls

Для локальных репозиториев, также поддерживаемых Git изначально, могут использоваться следующие синтаксисы:

 /path/to/repo.git/
file:///path/to/repo.git/
  

Ответ №2:

ДА. Для локальных репозиториев удаленный может быть относительным или абсолютным путем к другой локальной папке. Кроме того, это может быть в синтаксисе file:///path/to/folder . И вот еще несколько фактов о пульте дистанционного управления.

Удаленный может быть пакетом git, доступным только для чтения.

 git init /path/to/foo
cd /path/to/foo
touch a.txt
git add .
git commit -mfoo
git bundle create /path/to/foo.bundle master

git init /path/to/bar
cd /path/to/bar
git remote add origin /path/to/foo.bundle
# it's possible to fetch data from the bundle
git fetch origin master
git checkout master
# it's not possible to push data to the bundle
# git push fails
  

Удаленным может быть сам репозиторий.

 git init /path/to/foo
cd /path/to/foo
touch a.txt
git add .
git commit -mfoo

# add a remote which is the repository itself
git remote add origin .
# or
git remote add origin /path/to/foo

# push "master" to create a new branch "new_master"
git push origin master:new_master
  

Удаленным может быть любой репозиторий, доступный из текущего репозитория, даже если два репозитория совершенно разные.

 git clone https://github.com/arobson/rabbot
cd rabbot
git remote add new https://github.com/fooplugins/FooTable
git fetch new
  

Ответ №3:

Да, это возможно с помощью Git. Я часто использую этот метод, чтобы поиграть с git pull git push командами / без необходимости использования сети.

Пример (вы не указали, какую систему используете, поэтому я предположил, что Unix):

Создайте удаленный репозиторий git в /tmp/orig-repository:

 $ mkdir /tmp/orig-repository
$ cd /tmp/orig-repository
$ git init --bare
Initialized empty Git repository in /tmp/orig-repository/
  

Клонируйте вновь созданный репозиторий в /tmp/clone-repository:

 $ mkdir /tmp/clone-repository
$ cd /tmp/clone-repository
$ git clone /tmp/orig-repository
Cloning into 'orig-repository'...
warning: You appear to have cloned an empty repository.
done.
$ cd orig-repository
  

Создайте тестовый файл и внесите изменения:

 $ touch file
$ git add file
$ git commit -m 'add file'
[master (root-commit) 5f365e5] add file
 1 file changed, 0 insertions( ), 0 deletions(-)
 create mode 100644 file
$ git push
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 209 bytes | 209.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To /tmp/orig-repository
 * [new branch]      master -> master
  

Обратите внимание, что origin/master существует:

 $ git branch -r
  origin/master
  

Вы можете клонировать /tmp/origin-repository в другой репозиторий в вашей
файловой системе, нажать, а затем выполнить git fetch в /tmp/clone-repository — так же, как если
бы вы использовали Github или любой удаленный сервер Git.