我对git很陌生,熟悉常规的git克隆、开发、提交、推送工作流程。在我看过的一个教程中,我注意到开发人员做了以下工作:
git init
git fetch ssh://someserver.git refs/data/val
git checkout FETCH_HEAD
.
. make changes to files
.
git commit -am "somemessage"
git push ssh://someserver.git HEAD:refs/data/val有人能帮我解释一下:
refs/data/val在git fetch命令中的含义是什么?注意:这并不是为了理解FETCH_HEAD是什么。所以它不是重复的。
发布于 2016-11-17 11:37:31
这是一个奇怪的工作流程,在一般情况下并不是很有用。它的主要特性是使用一个特殊的引用命名空间,将refs/data/val视为分支名称。
其效果就像用--single-branch克隆,只是他克隆没有分支,然后把有趣的裁判当作一个分支对待。
git checkout步骤产生一个独立的头。
随后的提交将进行新的提交,以扩展分离的头。
最后一个git push更新另一个Git,继续将这个特殊命名的引用作为一个分支来处理。另一个Git可以自由地拒绝推送。许多人/大多数人之所以会这么做,仅仅是因为refs/data/并不是一个已知的安全推送名称空间。
由于没有命名的remote,因此为了便于合并和/或重基,远程的分支名称不能在本地存储。由于没有命名分支,因此不能为了方便提交、合并和/或重基而使用Git的内置分支行为。由于既没有命名分支,也没有命名的远程,所以不能使用Git的内置push行为,需要完全拼写的URL和HEAD到ref推送。
简而言之,这是一种非常规使用Git的不方便方法。
发布于 2016-11-17 03:11:57
这可能会为整个工作流提供一些洞察力:
What is the difference between pull and clone in git?
至于第二个问题,他正在从refs/data/val链接的回购处获取分支*.git。
https://stackoverflow.com/questions/40646066
复制相似问题