git clone した後で git の 更新対象から外す

● git clone した後で git の 更新対象から外す

git管理下には置きたいけれど 今回のブランチに限り 変更を追跡されて欲しくない時は
assume-unchanged または skip-worktree を設定することで追跡から外すことができます。
なお、これは開発側(更新、コミット、push を行う側)に設定します。

・1.assume-unchanged

assume-unchanged を設定する

git update-index --assume-unchanged <ファイル名>

取り消す

git update-index --no-assume-unchanged <ファイル名>

・2.skip-worktree

skip-worktree を設定する

git update-index --skip-worktree <ファイル名>

取り消す

git update-index --no-skip-worktree <ファイル名>

どちらもブランチごとに有効 ブランチを移動した際は再度設定が必要です

● 設定の確認

git ls-files -v

設定されているファイルには先頭に 半角の h が表示されます

● 設定するとどういう挙動となるか?

設定すると、git status での更新されたファイルリストに表示されなくなります。
git add -A でステージするファイルに追加されることもありません。

ただ設定したローカルリポジトリのみに有効なので、 別のローカルにて設定忘れたまま更新してコミット・push されるともちろんリモートに反映されます。

● assume-unchanged と skip-worktree の違いは?

基本的にskip-worktreeで良い。
イメージとしては、skip-worktreeは手元の変更を優先するが、 assume-unchangedはリポジトリの変更を優先する。

そのため、git reset --hardを実行したような場合は、 assume-unchangedは手元の変更が失われる。

まるまる引用 : http://htak.hatenablog.com/entry/2016/02/08/000000

No.2005
06/04 14:43

edit