繁体   English   中英

在Git中,是否需要远程跟踪分支?

[英]In Git, are remote tracking branches required?

2个Git克隆可以相互推/拉,而无需代表另一个的远程跟踪分支吗? 我知道它们在大多数情况下非常有用,但是有时我可能希望在辅助存储库(不是我的裸服务器)之间进行拉/推,并且我不想使事情变得混乱。 如果我不在乎远程跟踪分支,可以将其删除还是从不创建?

不需要远程跟踪分支。 它们只是(a)提供git push和pull默认行为,以及(b)接收与git status输出中的远程分支相对的本地分支状态信息的便利。 您不需要使用Git。

我不想把事情弄乱

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

如果您的意思是没有本地分支机构,则在远程分支机构上进行跟踪更改:

您不必让分支机构跟踪远程分支机构。 这是一种便利,它具有一些您将无法获得的好处; 例如git status指出您的分支是x,则该提交早于Origin的提交。

不设置跟踪分支不会阻止您使用遥控器。 仍然可以在所有命令中使用遥控器,而不用键入URL。

要查看跟踪了哪些分支,请使用git branch -avv 任何正在跟踪远程分支的分支都将在提交哈希左侧列出该远程分支。

除了删除它并重新创建而不进行跟踪之外,我不知道从分支中删除跟踪的方法。

如果您是指远程分支的本地副本(如git branch -r ):

您可以使用git branch -dr <remote/branch>删除它们-但下次您拉出或获取它时,它将再次出现。 它们是git fetch ...起作用所必需的,而git pull ...使用git fetch ...才是必需的。 每次都必须手动删除它们-或使用脚本。

但是,它们不会给存储库增加任何实际的混乱或开销。 远程跟踪分支位于磁盘上,只是其中包含提交哈希的文件。 提交保存在其他位置,大概是因为您想获取它们,所以它们已被合并或重新建立到一个或多个本地分支中。

可以使用URL而不是远程来获取此信息。 这不会创建有关FETCH_HEAD文件以外任何地方获取的内容的记录。 由于此文件在每次抓取时都会被覆盖,因此如果在执行另一次抓取之前未将提交数据合并或重新建立到本地分支中,则提交数据将丢失。 那里有远程跟踪分支,可以防止对获取的数据进行垃圾收集。

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

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

除了使用git pull REMOTE_NAME BRANCH ,您还可以git pull URL BRANCH并以相同的方式使用pull。 基本上,您可以在大多数git命令中将URL替换为远程目录名称的仓库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM