gpt4 book ai didi

git - 有没有办法记录 "unfetch"?

转载 作者:行者123 更新时间:2023-12-02 19:19:04 25 4
gpt4 key购买 nike

上下文:

我们正在使用 gerrit,但我错过了为一些 gerrit 变更集添加主题

有人建议执行git fetch origin "refs/notes/*:refs/notes/*",然后“编辑”审阅笔记并推迟结果。事实证明:我们的权限已设置好,以便我可以获取笔记,但不能推送它们。但是有权 push 此类更改的人修复了需要修复的条目,所以我对此方面没有意见。

出于好奇,我今天再次执行了 git fetch origin "refs/notes/*:refs/notes/*" ,然后我得到了

remote: Counting objects: 333792, done
...
Resolving deltas: 100% (103/103), completed with 44 local objects.
From ssh://whatever....
! [rejected] refs/notes/review -> refs/notes/review (non-fast-forward)

这就像我第一次获取“笔记”,我猜:我在本地确实不需要这些信息。

因此:

  • 有办法“删除”所获取的内容吗?
  • 如果不是,我如何强制我的本地存储库忘记我在本地对“notes”所做的更改?

最佳答案

你可以:

  • 删除您的 refs/notes/review完全引用;
  • 保持原样(可能没有理由这样做);或
  • 强制更新您自己的 refs/notes/review来自他们的refs/notes/review以便始终拥有最新的内容。

删除您的笔记

其中第一个实现了您的第一个 Gist 。为此,只需运行:

git update-ref -d refs/notes/review

更新您的笔记

最后一个实现了你的第二个 Gist 。要执行此操作一次,请运行:

git fetch origin +refs/notes/review:refs/notes/review

或者:

git fetch --force origin refs/notes/review:refs/notes/review

这是你第一次做的,除了设置了“force”标志,告诉你自己的 Git 从他们的 Git 更新你的,即使这会丢失你在本地所做的工作。

要在每个 git fetch origin 上执行此操作,您可以执行以下几项操作之一。我首选的方法是打开.git/config在我的编辑器中( git config --edit 将执行此操作)。您会在这个配置文件中找到以下形式的一些行:

[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*

(还会有一个 url 设置。)

这个fetch这行告诉你的 Git:每次我连接到 origin 时,默认情况下,我希望你,我的 Git,拿走他们所有的 refs/heads/*名称——所有分支名称——并使用它们强制更新我自己的 refs/remotes/origin/*名称。 这就是远程跟踪名称的工作原理。

添加第二个 fetch =行:

        fetch = +refs/notes/review:refs/notes/review

告诉你的 Git:然后,更新了我的 refs/remotes/origin/*来自他们的refs/heads/* ,还强制更新我的 refs/notes/review来自他们的refs/notes/review .

您可以拥有任意多个fetch线条如你所愿。您可以使用它们来实现奇特的技巧,例如引入其他笔记并重命名它们。

关于git - 有没有办法记录 "unfetch"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63295976/

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