合并分支时撤消获取命令

时间:2017-04-11 07:37:31

标签: git github

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

1 个答案:

答案 0 :(得分:0)

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

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

那说,脚注的时间。 : - )

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

2我认为有人可能认为“#34;磁盘空间不足"可能是这样做的一个原因,特别是如果一个大的对象被意外地推到遥控器上并且将通过下一次获取从遥控器中删除。但是,在一个空间不足的文件系统中工作一般都很棘手,除了将整个存储库移动到其他地方(某个地方没有磁盘空间问题)之外,我不确定我是否会想做太多。

来自How to undo 'git fetch'