2017-10-11 9 views
0

私はすべてのマージの前に実行されるルーチンを作っています。ユニットテストを実行し、他の設定ファイルをチェックします。 FYI、それはノードにコード化されています。マージする前に競合するファイルのリストを取得する方法は?

最後にすべてが正しければ、developと競合があるかどうかをチェックし、ユーザにyesまたはnoを出力するだけです。プルリクエストは、ローカルブランチではなくgitlabで管理する必要があります。したがって、ローカルブランチに「実際の」マージがあってはなりません。

git -conflitcs-with-this-branchのようなgitコマンドはありますか?そしてnodejsからそれを習得する方法?ありがとう、

ステファン。

答えて

2

マージ競合を検出するコマンドはgit mergeです。 git merge、任意に--no-commit、任意には分離したHEADで実行する。

競合が発生した場合は、git mergeがゼロ以外のステータスで終了します。競合がなければ、git mergeはゼロ状態で終了します。 --no-commitで実行すると、Gitはいずれの場合もコミットを行いません。これを実行しなければ、Gitは現在のHEADに対してマージコミットを行います。 HEADがデタッチされている場合、このコミットはHEADにのみ影響します。

分離HEADを使用した場合、HEADを元のブランチに再接続するか、コミットできるようになりました。

--no-commitを使用した場合は、マージが成功したか失敗したかにかかわらず、git merge --abortを実行するだけで済みます。

したがって、最も簡単なコマンドシーケンスはgit merge --no-commitを実行し、終了ステータスを保存してからgit merge --abortを実行することです。

すべての場合、Gitはマージ処理中にインデックスと作業ツリーを使用するため、Gitがその期間全体で使用するのに安全であることを確認する必要があります。 (特に、インデックスと作業ツリーはプロセスの開始時に「クリーン」でなければなりません。最後にはクリーンになりますが、後ろにマージドライバがなければクリーンになります)。

node.jsからgit mergeの終了ステータスを取得してください。私は分かりません)

関連する問題