我是Git的新手。
我知道Git远程回购用于共享代码。
此外,还有几种分支类型:
1. local.
1.1 non-tracking.
1.2 tracking.
2. remote.
为了共享代码,我需要将代码从本地存储库“推送”到远程存储库。
假设我:
本地机器 - >使用以下命令创建了一个名为“master”的NON-TRACKING分支:
git branch branch-name 。
本地机器 - >我已经在非跟踪分支中做了一些提交。
推送代码会将远程跟踪分支(本地计算机)和远程分支更新为跟踪分支(本地计算机)。
假设我想直接从远程分支推送/获取,而没有REMOTE TRACKING分支(本地机器),即没有它作为中间人...
这可能吗?
提前致谢。
答案 0 :(得分:1)
假设我想直接从远程分支推送/获取,而没有REMOTE TRACKING分支(本地机器),即没有它作为中间人...
你正在看着它,好像分支是一些重量级的东西。他们不是,甚至不是,远程。你推送和获取提交以及与它们一起使用的任何对象。然后你会把有趣的小标签挂在上面。在提取或推送过程中附加标签的成本并不是微不足道的,甚至几乎都不可辨别。
那就是说,是的,你可以做一些非常灵活的refname重写。要使用它,您可以将自己的repo用作遥控器,其名称为.
git ls-remote .
git fetch . +refs/heads/*:refs/duplicated-by-fetch/*
git fetch . +refs/*:refs/fetched/*
git push . +refs/fetched/*:refs/pushed/*/original
所以要直接复制所有远程的参考:
git fetch u://r/epo +refs/*:refs/*
如果其中一个复制的参考文件已经存在并且您已将其签出,那么git可能会抱怨;重写,实际上是一个隐含的git reset --soft
,而不是你想要在不知不觉中调用的东西。
远程的默认提取refspec可配置为remote.$remotename.fetch
,默认为
+refs/heads/*:refs/remotes/origin/*