如何'git remote add'并跟踪同一文件系统中的分支

mit*_*mit 20 git

我在/ a和/ b中有2个本地git档案,这些档案是从遥控器/原点克隆的.

/ b上有一个新的分支z

如何从archive/a中跟踪和获取分支z?

我试过这个:

cd /a
git remote add b /b
Run Code Online (Sandbox Code Playgroud)

这会创建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
Run Code Online (Sandbox Code Playgroud)

但那些命令仍然无法工作,我无法理解为什么:

git branch -a 
Run Code Online (Sandbox Code Playgroud)

不列出b中的远程分支(onlz显示原始的分支)

git checkout -t b/z
Run Code Online (Sandbox Code Playgroud)

不签出任何内容但返回错误消息

idb*_*rii 21

到目前为止,您只添加了b作为遥控器.您可以git branch -a在获取远程分支后尝试列出它们.

这是从b检出z分支的命令:

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
Run Code Online (Sandbox Code Playgroud)

-t(或--track)创建了一个跟踪分支,否则你会在分离的头的状态.

然后你应该看到:

/a$ git branch
  master
* z
Run Code Online (Sandbox Code Playgroud)

对于任何不清楚所涉及的步骤的人,这是我做的:

创造起源

$ mkdir origin
$ cd origin/
/origin$ git init --bare
Initialized empty Git repository in /origin/
/origin$ cd ..
Run Code Online (Sandbox Code Playgroud)

克隆'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
Run Code Online (Sandbox Code Playgroud)

克隆'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(-)
Run Code Online (Sandbox Code Playgroud)

将'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
Run Code Online (Sandbox Code Playgroud)

我已将上述命令放入脚本中,以便您自己测试.