如何在libgit2中设置checkout选项,使其行为类似于“git checkout”

时间:2017-04-24 12:54:34

标签: c++ libgit2

我在某个分支机构工作,但现在我想结帐到另一个指定的分支机构。当我设置这样的结帐选项时

git_checkout_options opts = GIT_CHECKOUT_OPTIONS_INIT;
opts.checkout_strategy = GIT_CHECKOUT_FORCE;

执行checkout并将存储库中的所有文件更改为checkouted分支中的文件...

如果我在第一个分支中执行了提交,一切都很清楚,但如果我不这样做,我就会失去所有未经修改的更改。

有没有办法在终端中表现得像“git checkout”? 我的意思是,当我执行结账时,程序会意识到是否存在一些未经修改的更改,

- >如果没有 - 结帐正在发生

- >如果有一些未经修改的更改,它会打印一些信息,如git  终端

例如来自终端的消息:

以下文件的本地更改将被结帐覆盖: output.csv

我想我必须设置不同的结帐策略,但我不知道哪个是最好的

我也尝试了

opts.checkout_strategy = GIT_CHECKOUT_NOTIFY_DIRTY;

但它的行为与力

相同

2 个答案:

答案 0 :(得分:1)

您可能希望将策略设置为GIT_CHECKOUT_SAFE。然后,您可以将notify_flags(不是checkout_strategy)设置为GIT_CHECKOUT_NOTIFY_CONFLICT,并设置一个打印出冲突文件的通知回调。

答案 1 :(得分:0)

最后,我得到了另一种信息,有我的解决方案:

index.html