0

2个Git克隆可以相互推/拉而没有代表另一个的远程跟踪分支吗?我知道它们在大多数情况下都非常有用,但我可能偶尔想在辅助存储库(不是我的裸服务器)之间拉/推,我不想把事情弄得乱七八糟。如果我不关心远程跟踪分支,是否可以将其删除或从不创建?

4

3 回答 3

2

不需要远程跟踪分支。它们只是为了方便(a)提供 git push 和 pull 一个默认行为,以及(b)接收有关本地分支状态的信息,而不是 git status 输出中的远程分支。你也不需要使用 Git。

我不想把事情弄得乱七八糟

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

于 2013-02-24T19:42:32.937 回答
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 文件之外的任何地方获取的内容的记录。由于每次提取都会覆盖此文件,因此如果在执行另一次提取之前未合并或重新定位到本地分支,则提交数据将丢失。远程跟踪分支用于防止获取的数据被垃圾收集。

于 2013-02-24T19:48:20.610 回答
1

是的,您只需不添加遥控器即可轻松实现。

在存储库之间推/拉的常用方法是 to git remote add NAME URL,但这只是一种方便(远程跟踪分支也需要)。

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

于 2013-02-24T19:29:36.453 回答