【问题标题】:How can I set up the remotes in my original repository as if it was cloned?如何在我的原始存储库中设置遥控器,就像它被克隆一样?
【发布时间】:2019-07-27 17:33:06
【问题描述】:

我在本地创建了一个 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 只在克隆的存储库中打印 "Your branch is up-date with 'origin/master'.",并且那里的日志提到 origin/HEAD

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

【问题讨论】:

标签: git git-remote


【解决方案1】:

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

这意味着该分支已设置为跟踪origin 上的master 分支。您可以像这样在原始本地存储库中进行设置:

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

this

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

origin/HEAD 在这里指向master 的尖端,因为本地仓库使用master 作为origin 的默认分支,即git log origin 等命令将使用的分支没有指定分支。

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

git remote set-head origin master

this,如daChihan所述。

【讨论】:

    猜你喜欢
    • 2014-03-02
    • 2012-05-03
    • 1970-01-01
    • 2013-06-04
    • 1970-01-01
    • 2013-08-25
    • 1970-01-01
    • 2011-10-16
    • 2012-03-07
    相关资源
    最近更新 更多