3

ベア以外のリポジトリでチェックアウトやリベースを実行せずに、プログラムでHEADを更新したい。

操作後、作業ツリーとインデックスを変更したくない。

編集

HEADの現在のターゲットのコミットIDではなく、HEADのシンボリックターゲットを更新する必要があります。これは、パスを更新する必要があるため使用できないことを除けば、他の何よりもチェックアウトに似ていますorg.eclipse.jgit.api.CheckoutCommandが、作業ツリーには触れたくありません。org.eclipse.jgit.api.CreateBranchCommandまた、孤立したブランチを作成しているために存在しない特定の開始点を想定しているため、不適切です。

4

2 に答える 2

6

これは私のために働いた:RefUpdate.link()

例:

Result updateHead(
    Repository repo, String newHead, boolean force, boolean detach
) throws IOException {
    RefUpdate refUpdate = repo.getRefDatabase().newUpdate(Constants.HEAD, detach);
    refUpdate.setForceUpdate(force);
    return refUpdate.link(newHead);
}

答えは、jgitソースコードの約5か所に埋め込まれています。

jgit v2.0.0.201206130900-rの3つのapiコマンドは、HEADを更新します:クローン、チェックアウト、およびリベース。該当する場合は、そのうちの1つを使用してください。

これらはいずれも当てはまりません。チェックアウトとリベースにより、作業ツリーとインデックスが変更されます。

うまくいけば、この質問と回答を投稿することで、他の人がそれに費やす時間を節約できます。

于 2012-08-27T18:51:33.707 に答える
0

org.eclipse.jgit.api.ResetCommandモードをに設定してみてくださいSOFT

于 2012-09-01T08:37:04.987 に答える