私はリモートからフェッチすることができましたが、私はローカルマスターブランチで変更をステージングするために以下のコードを実行しています。libgit2:フェッチ後にマージしてコミットするには?
git_annotated_commit * fetchhead_commit;
git_annotated_commit_lookup(&fetchhead_commit,
repo,
oid
);
git_merge(repo,&fetchhead_commit,1,NULL,NULL);
は、だから今、私がコミットするgitのコマンドラインツールを使用する場合、私は自動マージはコメントをコミットし、私は、ログをリモートからのと同じであることがわかります後に取得します。私はlibgitで同じものを取得しようとしていますが、リモート履歴のマージ結果を失うという結果になっています。
リモートからの履歴を保存するために、マージされた変更を「適切に」コミットする方法を教えてください。
編集:もう少し早送りをしても、まだローカルコミットがある場合、これらは受信マージ後に失われます。ローカルの変更は失われませんが、マージ後にステージングされ、再度コミットする必要があります。
あなたはここに私のコードを見ることができます:https://github.com/fintechneo/libgit2/blob/master/jsbuild/jslib.c
をマージが再びjsgitpull
から呼び出され、誰もが疑問に思う場合は、レコードのために、このハックは、Webブラウザでは動作しないfetchead_foreach_cb
機能で起こっていますemscriptenものは何についてですか?
どのようにコミットを作成していますか?これまでに何を試しましたか? –
早送り(git_reference_set_target を使って)することでもう少し手に入りました。しかし、ローカルの変更がある場合、これらのコミットは失われ、ローカルで変更されたファイルはステージングされ、再度コミットする必要があります。さあ、https://github.com/fintechneo/libgit2/blob/master/jsbuild/jslib.cのfetchead_foreach_cb関数を参照してください。 –
さて、マージした後はどうやってコミットを作成していますか?あなたは 'git_commit_create'を呼び出していますか? –