2013-02-24 118 views
0

2个Git克隆可以互相推/拉,而无需使用远程跟踪分支代表另一个分支?我知道他们大部分时间都非常有用,但我偶尔会想要在二次回购(不是我的裸机)之间进行拉/推,并且我不想让事情混乱。 如果我不关心远程追踪分支,它可以被删除或从未创建?在Git中,是否需要远程跟踪分支?

回答

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文件以外的任何地方。由于这个文件被每次读取覆盖,如果在执行另一次读取之前没有合并或重新绑定到本地分支,提交数据将会丢失。远程追踪分支在那里保持获取的数据被垃圾收集。

1

是的,您可以通过简单地不添加遥控器轻松实现。

在回购之间推/拉的通常方式是git remote add NAME URL,但这只是一种方便(并且也是远程跟踪分支所必需的)。

而不是使用git pull REMOTE_NAME BRANCH,你可以只是git pull URL BRANCH和使用拉相同的方式。基本上,您可以在大多数git命令中将URL替换为远程名称的回购。

+0

谢谢,这是一个非常有用的提示! – user826840 2013-02-25 09:23:08

2

远程追踪分支不是必需的。它们只是一个方便之处,(a)给予git推送和默认行为,(b)接收有关本地分支状态的信息,而不是git状态输出中的远程分支状态。你不需要使用Git。

我不想添乱的东西了

注意,设置远程跟踪分支完全不添乱的东西。它所做的只是将三行添加到本地存储库的配置文件中。它什么都不做。在git status期间的所有附加信息仅在命令执行时生成;没有任何东西被储存或以其他方式混淆事物。因此,即使您不需要它,设置远程跟踪分支通常也不是问题。