[解決済み] [Solved] ファイルを 'git commit' して、その内容の変更を無視することはできますか?
質問
私のチームのすべての開発者は、自分自身のローカル設定を持っています。 その設定情報は
devtargets.rb
これは、rakeのビルドタスクで使用されます。しかし、私は開発者がお互いのdevtargetsファイルを食い違えることを望んでいません。
最初に考えたのは、そのファイルを
.gitignore
のリストを作成し、git にコミットされないようにしました。
そこで私は、ファイルをコミットしても、そのファイルへの変更を無視することは可能なのだろうかと考え始めた。つまり、デフォルトバージョンのファイルをコミットしておけば、開発者がローカルマシンでそれを変更したときに git がその変更を無視し、git status や git commit を実行しても変更されたファイルのリストに表示されなくなるということですね。
そんなこと可能なんですか? 確かにいい機能だと思うのですが...。
解決方法は?
確かに、私も時々このような使い方をします。
git update-index --assume-unchanged [<file> ...]
元に戻してトラッキングを再開するには(どのファイルがアントラックされたか忘れてしまった場合。 この質問を見る ):
git update-index --no-assume-unchanged [<file> ...]
関連ドキュメント :
--[no-]assume-unchanged(変更なし
このフラグが指定された場合、パスに記録されているオブジェクト名は更新されません。その代わり、このオプションはパスの "assume unchanged" ビットを設定/解除します。assume unchanged"ビットがオンの時、ユーザーはファイルを変更しないことを約束し、作業ツリー・ファイルがインデックスに記録されているものと一致することをGitが仮定することを許可します。もし作業ツリーファイルを変更したい場合は、このビットをアンセットしてGitに伝える必要があります。これは、非常に低速なファイルシステムで大きなプロジェクトを扱うときに便利です。lstat(2)
システムコール (例: cifs) を使用します。Git は、例えばコミット時にインデックス内のこのファイルを修正する必要がある場合、(優雅に)失敗します。したがって、想定される未追跡のファイルが上流で変更された場合は、手動で対処する必要があります。
この場合のFail gracefullyとは、pullを行う際に上流でそのファイルに何らかの変更(正当な変更など)があった場合、その旨を表示することです。
$ git pull
…
From https://github.com/x/y
72a914a..106a261 master -> origin/master
Updating 72a914a..106a261
error: Your local changes to the following files would be overwritten by merge:
filename.ext
となり、マージを拒否されます。
この場合、ローカルの変更を元に戻すことで、この状況を打開することができます。
$ git checkout filename.ext
を設定した後、再度プルしてローカルファイルを再修正するか、あるいは
–no-assume-unchanged
で、その時点で通常のstashやmergeなどを行うことができます。
関連
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] Git が追跡したファイルを .gitignore に登録したまま「忘れる」ようにするにはどうしたらいいですか?
-
[解決済み] Git で、ステージされていない変更を破棄するにはどうしたらいいですか?
-
[解決済み] ローカルにあるファイルを無視するようにgitを設定するにはどうすればよいですか?
-
[解決済み] git のコミットを削除しても、変更は維持できますか?
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み] Git で最新のコミットを新しいブランチに移動する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】gitがローカルバージョンをリモートバージョンに置き換える
-
[解決済み】Gitマージで「すでに最新」と報告されるが、違いはある
-
[解決済み】ERROR: Error cloning remote repo 'origin'.
-
[解決済み】Git Extensions。Win32 エラー 487: cygwinのヒープ用に領域を確保できなかった、Win32エラー0
-
git push reports an error ! [リモート拒否] master -> master (受信前のフックが拒否されました)
-
[解決済み] リモートの <ブランチ名> とマージするように設定されていますが、そのような参照は取得されませんでしたか?
-
[解決済み】マージが終了していません(MERGE_HEADは存在します)。
-
[解決済み] あなたのブランチは 'origin/master' より 3 コミット進んでいます。
-
[解決済み] GIT_DISCOVERY_ACROSS_FILESYSTEM が設定されていない。
-
[解決済み] .gitignore と "以下の追跡されていない作業ツリーファイルはチェックアウトによって上書きされるでしょう"