“是怎么回事?”;git pull“;用过git2 rs生锈的板条箱了吗?

“是怎么回事?”;git pull“;用过git2 rs生锈的板条箱了吗?,git,rust,pull,libgit2,Git,Rust,Pull,Libgit2,我正在使用它在一个Rust应用程序中实现一些标准git功能。我一直在阅读git内部的内容,并了解到在高级别上“git pull”是一个“git fetch”,然后是一个“git merge”,但我仍然很难理解如何使它与git2-rs一起工作。在一个问题上进行了讨论,大家一致认为git2 rs“git pull”示例很好,但从未创建过一个。在讨论中有一个硬重置的例子,但我希望避免覆盖本地更改(因此合并)。我在使用Git2RS的任何其他代码库中都找不到一个例子 “git reset”示例显示了如何在

我正在使用它在一个Rust应用程序中实现一些标准git功能。我一直在阅读git内部的内容,并了解到在高级别上“git pull”是一个“git fetch”,然后是一个“git merge”,但我仍然很难理解如何使它与git2-rs一起工作。在一个问题上进行了讨论,大家一致认为git2 rs“git pull”示例很好,但从未创建过一个。在讨论中有一个硬重置的例子,但我希望避免覆盖本地更改(因此合并)。我在使用Git2RS的任何其他代码库中都找不到一个例子

“git reset”示例显示了如何在获取后获取OID,我认为,但是合并函数需要一个参数,我不确定如何在两者之间进行转换,甚至不确定这是否是正确的方向。

请尝试以下操作:

let our_commit=find_last_commit()?;
let reference=回购找到参考(“取头”)?;
让他们的_commit=reference.peel_to_commit()?;
让_指数=回购
.merge_commit(&我们的_commit,&他们的_commit,一些(&MergeOptions::new())?;
使用

pub fn find\u last\u commit(repo:&Repository)->结果{
让obj=repo.head()?.resolve()?.peel(ObjectType::Commit)?;
将对象匹配到_commit()中{
正常(c)=>正常(c),
_=>Err(RepoError::new(“提交错误”),
}
} 

由于未知原因,
git2 rs
无法绑定,我建议您在github上打开一个问题。因此,我发现
let reference=repo.find_reference(“FETCH_HEAD”)?;让fetch_head_commit=repo.reference_to_annotated_commit(&reference)
回购合并(&[&fetch\u head\u commit],无,无)似乎错过了提交?另见