首页 > 解决方案 > 如何在我的原始存储库中设置遥控器,就像它被克隆一样?

问题描述

我在本地创建了一个 Git 存储库并向其中提交了一个文件:

$ mkdir blarg && cd blarg

$ git init
Initialized empty Git repository in /home/myuser/tests/blarg/.git/

$ echo a line > test.txt

$ git add .

$ git commit -m "initial commit"
[master (root-commit) f47ef6d] initial commit
1 file changed, 1 insertion(+)
create mode 100644 test.txt

我希望我的服务器托管这个存储库,所以我在那里创建了一个空的存储库并配置了对它的访问(这部分工作正常)。我可以将此存储库设置为本地存储库中的远程存储库并推送到它:

$ git remote add --track master origin https://git.example.net/repos/blarg.git

$ git remote -v
origin  https://git.example.net/repos/blarg.git (fetch)
origin  https://git.example.net/repos/blarg.git (push)

$ git push origin master
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 216 bytes | 216.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://git.example.net/repos/blarg.git
* [new branch]      master -> master

$ git pull
Already up to date.

$ git status
On branch master
nothing to commit, working tree clean

$ git log --oneline
f47ef6d (HEAD -> master, origin/master) initial commit

这一切似乎都按预期工作。但是,在将这个存储库从服务器克隆到一个新目录后,克隆的存储库中的git status消息略有不同,并且git log还显示了比原始存储库中的多一个 ref:

$ cd ..

$ git clone https://git.example.net/repos/blarg.git blarg2
Cloning into 'blarg2'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done

$ cd blarg2

$ git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

$ git log --oneline
f47ef6d (HEAD -> master, origin/master, origin/HEAD) initial commit

请注意,git 只打印“你的分支是最新的'origin/master'。” 在克隆的存储库中,并且那里的日志提到origin/HEAD.

发生了什么事,如何调整我的原始存储库以使其表现得像克隆的一样?

标签: gitgit-remote

解决方案


你的分支是最新的'origin/master'

这意味着该分支已设置为masterorigin. 您可以像这样在原始本地存储库中进行设置:

git branch --set-upstream-to=origin/master

看到这个

f47ef6d (HEAD -> master, origin/master, origin/HEAD) 初始提交

origin/HEAD指向master此处的提示,因为本地 repomaster将默认用作分支,origin即命令将使用的分支,例如git log origin未指定分支。

您可以像这样在原始存储库中进行设置:

git remote set-head origin master

看到这个,正如daChihan所提到的。


推荐阅读