git - 我不想检查一个特定的分支,即使是偶然
问题描述
我有一个有两个根提交的存储库,旧分支几乎没有使用,但是如果我不小心出于习惯检查它,那么它要么永远运行以检查如果我破坏它然后它会留下一个需要重置的状态之前它是可用的。
如何告诉 git 不要签出分支 A?它在本地不存在,它是从 origin/A 自动创建的。那么,如何在结帐 -b 上停止自动创建?配置
[branch "A"]
remote = fubar
没有帮助。
解决方案
当你运行时:
git checkout foo
并且分支foo
不存在但分支origin/foo
确实存在,Git 检查提交的origin/foo
指向,然后foo
使用origin/foo
set 作为上游创建foo
,指向相同的提交。这称为DWIM 模式,表示按我的意思行事: Git 假定您要输入:
git checkout --track origin/foo
不知何故不小心遗漏了这--track origin/
部分。
Git 无法完全禁用此 DWIM 模式。但是总共有三种情况,DWIM 要么不触发,要么无法触发。这些是:
分支
foo
已经存在,指向一些提交。由于您的分支名称是yours,您只需创建一个名为 的分支foo
,这样它就foo
存在了。选择它应该指向的一些提交,并创建它:branch foo a123456
(当然,假设这
a123456
是一个有效的提交)。现在git checkout foo
将切换到 commita123456
和 branchfoo
。分支
foo
不存在,但也不存在origin/foo
。没有origin/foo
远程跟踪名称可作为git checkout --track origin/foo
. 现在git checkout foo
只会失败。您的远程跟踪名称是yours,因此您可以简单地 delete
origin/foo
,但有一个问题。删除很简单:git branch -r -d origin/foo
现在它消失了!不幸的是,
git fetch
只要 Git atorigin
有一个名为 的分支,运行就会把它带回来,foo
因为你已经告诉了你的 Git——可能是无意的;这是默认设置——每次运行到 remote时,您的 Git 都应该盲目地更新或重新创建所有origin/*
名称以匹配的分支名称。这意味着要使删除生效,您必须说服 Git删除分支。origin
git fetch
origin
origin
foo
这可能是可能的,甚至可能很容易。这可能是你应该在这里做的。但是origin的Git不是你的Git,我不能告诉你这是否适合对别人的Git做。你必须自己找到或弄清楚。
最后,如果存在两个或多个可能的 s ,则 DWIM 模式将失败。
foo
也就是说,git checkout foo
成为git checkout --track origin/foo
,但它这样做只是因为在列出了所有远程跟踪名称后,唯一相似的名称foo
是origin/foo
。您可以拥有多个遥控器。事实上,即使对于一个 Git 存储库,您也可以拥有多个远程。所以你可以添加第二个遥控器:
git remote add origin2 <url>
<url>
您使用的相同 URL在哪里origin
,然后运行git fetch
. 现在您将不仅拥有,而且origin/foo
不知道DWIM 是哪一个,所以它不会。origin2/foo
git checkout foo
这里的缺点是这也会导致所有其他DWIM
git checkout
操作失败。如果这不打扰你,你可以在这里停下来。如果是这样,您可以修复它:您可以设置origin2
为单分支跟踪器,方法是更改origin2
. 您可以在通过编辑创建额外的遥控器后执行此操作.git/config
,或者您可以在创建origin2
时使用以下命令执行此操作:git remote add origin2 <url> -t foo
所以这
origin2
是一个单分支跟踪器。现在您将只有origin2/foo
, notorigin2/master
, notorigin2/develop
, 并且没有任何其他这样的名称。
推荐阅读
- c# - 我可以利用 List
使用 UpdateRange(IEnumerable) 时的函数 Remove(T) 和 Insert(Int32, T) )? - mongodb - 将 Spring Boot + WebFlux + MongoDB 应用程序从 2.3 升级到 2.4 后不支持的扩展类型
- excel - For循环不迭代VBA
- excel - VBA - 如果单元格包含一个单词,那么消息框只有一次
- python - 为什么 manage.py 看不到 __init__ 文件?
- http - 从支付网关返回的 HTTP 错误 414
- python - 根据数据范围优化x轴-水平条之间的plt.yticks`
- dataframe - 如何在pyspark数据框中进行分组而不聚合
- cross-browser - 在 Set-Cookie 标头中可以有一个尾随分号吗?
- c# - dotnet new 找不到路径的一部分