gpt4 book ai didi

git - 是否有可以解决错误 : remote branch 'refs/heads/foo/bar' not found? 的 git 命令

转载 作者:行者123 更新时间:2023-12-01 22:42:30 24 4
gpt4 key购买 nike

在我的情况下,我正在跟踪其他人 merge 和删除的远程修补程序分支。

我已经删除了我的本地分支,但是当我 pull 时,我仍然收到上述错误,因为我的 git 配置文件中有以下几行:

[remote "origin"]
...
fetch = +refs/heads/foo/bar:refs/remotes/origin/foo/bar
push = +refs/heads/foo/bar:refs/for/foo/bar
...

可以通过从文件中删除这些行来解决错误,但有没有办法从命令行执行此操作?

最佳答案

有,但通常比手动编辑困难得多,如果您只想摆脱一个匹配的行。

修改git配置文件的命令是 git config .它有 --unset , --unset-all , 和 --remove-section用于删除某个特定部分或键中的一个、所有匹配或所有条目的选项。

在这种情况下,该部分是 remote.origin (因为它在文件中的 [remote "origin"] 中)并且 key 是 remote.origin.fetch .在这种情况下,您不想删除整个部分,从而留下 --unset--unset-all作为可能性。

可以有多个 fetch线,不止一个 push线。换句话说,一个键可以有多个副本,具有不同的值。

如果只有一个 remote.origin.fetch行,并且您想删除它,您可以简单地:

git config --unset remote.origin.fetch

如果您在具有多个提取行的存储库上尝试此操作,您将获得:
warning: remote.origin.fetch has multiple values

你会发现没有删除任何东西(至少这是我在 git 2.1.0 中得到的)。在这种情况下,您需要更复杂的变体,或者 --unset-all (删除所有 remote.origin.fetch 键)或 --unset key value_regex (删除那些值匹配 value_regex 的键)。

由于您可能只想取消设置匹配的一行,因此您必须想出一个与该一行匹配的正则表达式,并且仅匹配该一行。通读 the git config documentation想出一个合适的正则表达式;请注意,由于这些是 POSIX“扩展”RE,因此只有 +字符表示“一个或多个前一个字符”,因此 +refs/...不起作用,因为缺少“前一个字符”部分。 (根据文档,这些显然也没有 anchor 定。)在这种情况下, :refs/remotes/origin/foo/bar可能就足够了,但你可以变得更漂亮。

删除 push输入,重复上述步骤但使用 remote.origin.push作为关键。

(或者只是使用您最喜欢的编辑器并以交互方式删除正确的行,这要容易得多,尽管不太适合脚本......)

关于git - 是否有可以解决错误 : remote branch 'refs/heads/foo/bar' not found? 的 git 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25647884/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com