Подтвердить что ты не робот

Как 'git удаленный add' и отслеживать ветвь в той же файловой системе

У меня есть 2 локальных git архива в /a и in/b, которые были клонированы из пультов/истоков.

Существует новая ветвь z on/b

Как я могу отслеживать и извлекать ветвь z из архива /a?

Я пробовал это:

cd /a
git remote add b /b

Это создает 2 файла конфигурации, но мне не удавалось извлечь что-либо или перечислить удаленные ветки на /a, которые отображали бы ветки в /b


После пробовать разные вещи я нашел следующее, что работает:

1) git remote show b перечисляет все удаленные ветки в b

2) Я могу получить этот синтаксис:

git fetch file:///a/ z


Другие вещи, которые также работают:

$ cd /b
$ git checkout -b z
Switched to a new branch 'z'
$ git pull b z

Но эти команды все еще не работают, и я не могу понять, почему:

git branch -a 

не отображает удаленные ветки в b (onlz показаны исходные)

git checkout -t b/z

Не проверяет ничего, кроме как возвращает сообщение об ошибке

4b9b3361

Ответ 1

Пока вы только добавили b в качестве пульта. Вы можете попробовать git branch -a перечислить удаленные ветки после того, как вы их извлекли.

Здесь команды для проверки ветки z из b:

git remote add b /b              # you've already done
git fetch b                      # get it so we can see it
git checkout -t b/z              # check out a local tracking branch

-t (или --track) создает ветвь отслеживания, иначе вы будете в состоянии отдельной головки.

Затем вы должны увидеть:

/a$ git branch
  master
* z

Для всех, кто неясно о шагах, вот что я сделал:

создать источник

$ mkdir origin
$ cd origin/
/origin$ git init --bare
Initialized empty Git repository in /origin/
/origin$ cd ..

clone 'a' и добавить некоторый контент

$ git clone origin/ a
Initialized empty Git repository in /a/.git/
warning: You appear to have cloned an empty repository.
$ cd a
/a$ echo hi there > hello
/a$ git add hello
/a$ git ci -m'first commit'
[master (root-commit) 0867b93] first commit
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 hello
/a$ git push origin master 
Counting objects: 3, done.
Writing objects: 100% (3/3), 210 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
To /origin/
 * [new branch]      master -> master

clone 'b' и добавьте больше контента в новую ветку

/a$ cd ..
$ git clone origin/ b
Initialized empty Git repository in /b/.git/
$ cd b
/b$ git checkout -b z
Switched to a new branch 'z'
/b$ echo new guy reporting in >> hello 
/b$ git ci -am "new recruits"
[z 81044ee] new recruits
 1 files changed, 1 insertions(+), 0 deletions(-)

Добавьте 'b' в качестве пульта дистанционного управления в 'a'

/b$ cd ../a
/a$ git remote add b ../b
/a$ git fetch b
remote: Counting objects: 5, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From ../b
 * [new branch]      master     -> b/master
 * [new branch]      z          -> b/z
/a$ git br
* master
/a$ git checkout -t b/z
Branch z set up to track remote branch z from b.
Switched to a new branch 'z'
/a$ git br
  master
* z

Я добавил вышеперечисленные команды в script, чтобы вы могли проверить его самостоятельно.

Ответ 2

Я не думаю, что вы можете это сделать.

Я думаю, вам нужно нажать ветвь z в начало в b и извлечь ее из.

cd /b
git push origin z

Эта последняя команда подталкивает локальную ветвь z к удаленному (поэтому нажатие z → origin/z)

то вы можете отслеживать его локально в репо a:

cd /a
git checkout -b z origin/z

Эта последняя команда создает (и проверяет) локальную ветвь z, которая отслеживает начало/z