refs/heads/master:refs/heads/master 是什么意思?
What does refs/heads/master:refs/heads/master mean?
通常,我通过命令行使用 Git。今天,我决定将它与生成以下命令的 NetBeans IDE 一起使用:
git push ssh://...myrepo.git/ refs/heads/master:refs/heads/master
谁能解释一下 refs/heads/master:refs/heads/master
是什么意思?
您将本地名为 'master' 的分支推送到远程仓库,该分支也称为 'master'。
通常情况下,您的分支会有一个上游,在这种情况下,这种语法是不必要的。
使用的syntax如下:git push <repository> <src-ref>:<dst-ref>
通过使用 refs/heads/master
作为 <src-ref>
和 <dst-ref>
,Git 与 限定和明确的 refspecs(本地和远程)并且不需要根据源和目标猜测命名空间 refspecs。此外,存储库是明确提供的,这意味着它不是由配置的名称寻址(如 origin
)。
让我们在演示存储库中实际操作一下。分支 dev
已签出,远程已在克隆后删除。首先,我们列出(明确提供的)远程存储库中的引用,并看到所有引用都指向 7b7d5a3。 git-push 的日志显示我们在远程 master
分支上更新 7b7d5a3..4a27218
而没有配置远程并且站在 dev
分支。再次列出遥控器上的引用证实了这一点。
$ git branch -va
* dev 7b7d5a3 Initial commit
master 4a27218 Add file.txt
$ git ls-remote git@domain.tld:user/repo.git
7b7d5a33d6e6ea3d69d9f87fa8ef1c596a37e24c HEAD
7b7d5a33d6e6ea3d69d9f87fa8ef1c596a37e24c refs/heads/dev
7b7d5a33d6e6ea3d69d9f87fa8ef1c596a37e24c refs/heads/master
$ git push -v git@domain.tld:user/repo.git refs/heads/master:refs/heads/master
Pushing to git@domain.tld:user/repo.git
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 294 bytes | 294.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To domain.tld:user/repo.git
7b7d5a3..4a27218 master -> master
$ git ls-remote git@domain.tld:user/repo.git
4a272186f7f56f2346fb2df7e63584f09936bdad HEAD
7b7d5a33d6e6ea3d69d9f87fa8ef1c596a37e24c refs/heads/dev
4a272186f7f56f2346fb2df7e63584f09936bdad refs/heads/master
通常,我通过命令行使用 Git。今天,我决定将它与生成以下命令的 NetBeans IDE 一起使用:
git push ssh://...myrepo.git/ refs/heads/master:refs/heads/master
谁能解释一下 refs/heads/master:refs/heads/master
是什么意思?
您将本地名为 'master' 的分支推送到远程仓库,该分支也称为 'master'。
通常情况下,您的分支会有一个上游,在这种情况下,这种语法是不必要的。
使用的syntax如下:git push <repository> <src-ref>:<dst-ref>
通过使用 refs/heads/master
作为 <src-ref>
和 <dst-ref>
,Git 与 限定和明确的 refspecs(本地和远程)并且不需要根据源和目标猜测命名空间 refspecs。此外,存储库是明确提供的,这意味着它不是由配置的名称寻址(如 origin
)。
让我们在演示存储库中实际操作一下。分支 dev
已签出,远程已在克隆后删除。首先,我们列出(明确提供的)远程存储库中的引用,并看到所有引用都指向 7b7d5a3。 git-push 的日志显示我们在远程 master
分支上更新 7b7d5a3..4a27218
而没有配置远程并且站在 dev
分支。再次列出遥控器上的引用证实了这一点。
$ git branch -va
* dev 7b7d5a3 Initial commit
master 4a27218 Add file.txt
$ git ls-remote git@domain.tld:user/repo.git
7b7d5a33d6e6ea3d69d9f87fa8ef1c596a37e24c HEAD
7b7d5a33d6e6ea3d69d9f87fa8ef1c596a37e24c refs/heads/dev
7b7d5a33d6e6ea3d69d9f87fa8ef1c596a37e24c refs/heads/master
$ git push -v git@domain.tld:user/repo.git refs/heads/master:refs/heads/master
Pushing to git@domain.tld:user/repo.git
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 294 bytes | 294.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To domain.tld:user/repo.git
7b7d5a3..4a27218 master -> master
$ git ls-remote git@domain.tld:user/repo.git
4a272186f7f56f2346fb2df7e63584f09936bdad HEAD
7b7d5a33d6e6ea3d69d9f87fa8ef1c596a37e24c refs/heads/dev
4a272186f7f56f2346fb2df7e63584f09936bdad refs/heads/master