2个Git克隆可以相互推/拉而不需要远程跟踪分支代表另一个吗?我知道他们大部分时间都非常有用,但我偶尔会想要在二级回购(不是我的裸机)之间拉/推,而且我不想让事情变得混乱。 如果我不关心远程跟踪分支,是可以删除还是从不创建?
答案 0 :(得分:2)
不需要远程跟踪分支。它们只是方便(a)给出git push和pull默认行为,(b)接收有关本地分支状态的信息,而不是git status输出中的远程状态。你不需要使用Git。
我不想搞砸了
请注意,设置远程跟踪分支根本不会使事情变得混乱。它所做的就是在本地存储库的配置文件中添加三行。它没有做任何其他事情。 git status
期间的所有附加信息仅在执行命令时生成;没有任何东西存储或以其他方式混乱。因此,即使您不需要设置远程跟踪分支,通常也不是问题。
答案 1 :(得分:2)
如果您的意思是远程分支上没有本地分支跟踪更改:
您不必让分支跟踪远程分支。这是一种便利,有一些你不会有的好处;例如git status
表明你的分支是x提交在原点之前。
未设置跟踪分支并不会阻止您使用遥控器。遥控器仍可用于所有命令,而不是键入URL。
要查看跟踪的分支,请使用git branch -avv
。跟踪远程分支的任何分支都将列出提交哈希左侧的远程分支。
我不知道从分支中删除跟踪的方法,除了删除它并重新创建而不跟踪。
如果您指的是远程分支的本地副本(由git branch -r
看到):
您可以使用git branch -dr <remote/branch>
删除这些内容 - 但是下次您提取或获取它时会返回。 git fetch ...
需要使用它们,而git pull ...
使用git fetch ...
。每次都必须手动删除它们 - 或者编写脚本。
但是,它们不会向存储库添加任何真正的混乱或开销。远程跟踪分支在磁盘上只是一个带有提交哈希的文件。提交被保存在其他地方,大概是因为你想要获取它们,它们已被合并或重新绑定到一个或多个本地分支。
可以使用URL而不是远程来获取此信息。除了FETCH_HEAD文件之外,这不会创建除了提取内容的记录。由于每次提取都会覆盖此文件,因此如果在执行另一次提取之前未将提交数据合并或重新绑定到本地分支,则提交数据将丢失。远程跟踪分支用于保持所获取的数据不被垃圾收集。
答案 2 :(得分:1)
是的,您只需不添加遥控器即可轻松实现这一目标。
在回购之间推送/拉出的常用方法是git remote add NAME URL
,但这只是方便(并且远程跟踪分支也需要)。
您可以git pull REMOTE_NAME BRANCH
而不是使用git pull URL BRANCH
,而是以相同的方式使用pull。基本上,您可以在大多数git命令中将URL替换为远程名称的repo。