2016-01-09 10 views
5

receive.denyCurrentBranchconfig optionは、チェックアウトであるレポのブランチにプッシュするとどうなるかを制御します。`receive.denyCurrentBranch = updateInstead`はどのようにインデックスと対話しますか?

デフォルトでは、それはそれを拒否します(チェックインブランチを持たないベアレポに押し込むのが普通です)。

ignoreまたはwarnで無効にすることができます。

もう1つのオプションはupdateInsteadです。これは何

HEADと作業ディレクトリが同じで、かつ分岐が押された場合には、作業ディレクトリとブランチ/ HEADの両方が同時に更新され、HEADであるということです。

作業ディレクトリがHEADと異なる場合、プッシュは拒否されます。
これは、Webサーバーにプッシュする場合に便利です。for example

私の質問は、このオプションはIndexとまったく同じですか?

インデックスは更新されていますか? HEADと作業ディレクトリは一致しますが、Indexでは一致しない場合はどうなりますか?

答えて

5

インデックスは更新されていますか? HEADと作業ディレクトリは一致しますが、インデックスは一致しない場合はどうなりますか?

Commit 0855331 (git 2.4.0-rc0, Dec. 2014)は明らかにそれを述べている:

receive.denyCurrentBranchupdateInsteadに設定されている場合は、 試みが現在チェックアウトされているブランチを更新することをプッシュ を受け入れている場合にのみインデックスと正確に作業ツリー現在チェックアウトされている と一致します。その場合、インデックスと 作業ツリーが、プッシュされたコミットに一致するように更新されます。
それ以外の場合、プッシュは拒否されます。

同じコミットがpush-to-checkoutフックを導入しましたが。

このフックを使用して、この「push-to-deploy」ロジックをカスタマイズできます。
フックは、現在のブランチの先端が更新される予定のコミットを受け取り、は、どのようなローカルな変更が受け入れられるか、および現在の更新されたヒントと一致するようにインデックスおよび作業ツリーを更新する方法を決定できます支店

これは、インデックスに関して少し柔軟性を与えます。


Commit 1a51b52, git 2.4.0-rc2, Apr 2015は再びそれを言う:

updateinsteadreceive.denycurrentbranchを設定し、作業ツリーとインデックスが本当にきれい あるとき、 に現在のブランチを押して、は作業ツリーをリセットすることになっていますインデックスは一致します プッシュされたコミットのツリー