合并分支时撤消获取命令



我有两个分支A和B。我想将 A 与 B 合并。我错误地运行了git fetch命令。我想撤消它。有什么命令可以这样做吗?

很难 1 "撤消"一个 git fetch,但从来没有 2 有任何理由需要撤消一个 git fetch。

请记住,git fetch 所做的是调用远程,获取 SHA-1 映射的分支名称列表,引入提交和其他您需要的对象,以便将它们存储在您的存储库中,然后更新您的远程跟踪分支,以便它们指向远程的当前(截至您刚刚打电话时)分支提示。这对你的任何工作树文件都没有影响,如果你明天再次运行 git fetch,明天可以跳过今天完成的任何工作。如果你设法撤消了获取,明天的运行将不得不重新做今天完成的工作,所以这是一个净损失:你只是花了一些精力,所以你的 git 明天将不得不通过网络带来更多的代码。

也就是说,是时候做脚注了。

1如果您有远程 reflogs(您可能这样做),这并不难:只需使用远程 reflogs 查找在最近获取中更新的远程跟踪分支 - 相同的信息也可能在FETCH_HEAD文件中可用 - 然后使用 git update-ref 将这些引用指向它们以前的 reflog 条目。但这仍然会将获取的对象保留在您的存储库中,因此要真正清除它们,您还必须删除中间 reflog 条目,然后运行 git gc --prune=now,这需要非常小心,并且会丢弃所有未引用的对象,而不仅仅是最近获取带来的对象。

2我认为有人可能会争辩说"磁盘空间不足"可能是这样做的一个原因,特别是如果一个大对象被意外推送到远程,并且将在下一次获取时从远程中删除。不过,在空间不足的文件系统中工作通常很棘手,我不确定除了将整个存储库移动到其他地方(没有磁盘空间问题的地方)之外,我还想在这里做很多事情。

从 如何撤消"git fetch">

最新更新