我在/a和/b中有两个本地git存档,它们是从远程/源克隆的。
在/b上有一个新的分支z
如何从归档/a中跟踪和获取分支z?
我试过这个:
cd /a
git remote add b /b
这将创建2个配置项,但我没有设法获取或列出显示/b上的分支的/a上的远程分支
在尝试了不同的方法后,我发现以下方法是有效的:
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中的远程分支(仅显示原始中的分支)
git checkout -t b/z
不签出任何内容,但返回错误消息
发布于 2011-03-01 10:38:13
到目前为止,您只添加了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
-t
(或--track
)创建一个跟踪分支,否则您将处于分离的head状态。
然后,您应该会看到:
/a$ git branch
master
* z
对于任何不清楚所涉及的步骤的人,我做了以下工作:
创建原点
$ mkdir origin
$ cd origin/
/origin$ git init --bare
Initialized empty Git repository in /origin/
/origin$ cd ..
克隆'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
克隆'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
我把上面的commands into a script放在上面,这样你就可以自己测试它了。
发布于 2011-03-01 10:31:14
我不认为你能做到。
我认为您需要将分支z推送到b中的原点,然后从a中获取它。
cd /b
git push origin z
最后一条命令将本地分支z推送到远程(因此推送z -> origin/z)
然后您可以在repo a中对其进行本地跟踪:
cd /a
git checkout -b z origin/z
最后一个命令创建(并签出)跟踪origin/z的本地分支z
https://stackoverflow.com/questions/5149872
复制相似问题