プリアンブルをスキップしたい場合があります。
次の構造の npm パッケージがあります。
lib/index.js
src/index.coffee
ソース ファイルは CoffeeScript ファイルです。ソース ファイルから JavaScript ファイルをビルドするための make ターゲットがあります。最近まで、各コミットに JavaScript ファイルへの変更を含めていましたが、現在は公開前スクリプトでxyzを使用しています。
XYZ = node_modules/.bin/xyz --script scripts/prepublish
.PHONY: release-major release-minor release-patch
release-major: LEVEL = major
release-minor: LEVEL = minor
release-patch: LEVEL = patch
release-major release-minor release-patch
@$(XYZ) --increment $(LEVEL)
公開前のスクリプトは簡単です。
#!/usr/bin/env bash
set -e
rm -f lib/index.js
make lib/index.js
git add lib/index.js
これは、新しいリリースを公開するたびに (make release-patch
たとえば を実行して)、lib/index.jsが再構築され、リリース コミットに追加されることを意味します。この時点まではすべて正常に動作します。
リリース スクリプトはコンパイル済みファイルを自動的に更新するため、コミットするたびに手動で更新する必要はなくなりました。問題は、 を実行した後make test
、lib/index.jsが変更された追跡ファイルとしてgit status
リストされることです。このファイルを誤ってコミットするのを避けたいので、.git status
最初に試したのは.gitignore/lib/
への追加です。ただし、lib/index.jsは既に追跡されているため、これは機能しません。
それから私は発見しgit update-index --assume-unchanged
ました。このコマンドをlib/index.js
引数として実行したところ、ファイルはgit status
. ここまでは順調ですね。ただし、現在はgit add lib/index.js
機能しなくなったため、prepublish スクリプトは機能しません。
prepublish スクリプトは の前に実行git update-index --no-assume-unchanged lib/index.js
できgit add
、その後 でビットを元に戻すことができると思いますgit update-index --assume-unchanged lib/index.js
。これは本当に最善のアプローチですか?
要約すると、ファイルに対する機能を保持しながら、追跡されたファイルへの変更を無視するにはどうすればよいgit add
でしょうか?