git ですでに管理されているファイルの変更を無視する
.gitignoreとは違い、既に管理されているファイルの変更を無視したい。
環境依存の関係でどうしても変更したいが、全体には影響させたくないときに使う。
git update-index --skip-worktree [ファイル名]
git update-index はインデックスを更新する。インデックスはワーキングツリーとリポジトリの中間に位置するステージングエリアのこと。
これの--skip-worktreeオプションでファイルの変更を無視する。
この操作を取り消すには --no-skip-worktree を使う
git update-index --no-skip-worktree [ファイル名]
注意点
--no-skip-worktree を使うと、変更を検知することができなくなる。そのため、変更を取り込めないことによる別のトラブルが発生する場合がある。後述する--assume-unchangedの方が目的に合っている場合もある。
--assume-unchangedオプション
似たようなオプションで、--assume-unchangedがある。--skip-worktreeがファイルの変更を無視するのに対して、--assume-unchangedはローカルでのファイル変更が無いと仮定するように指示する。
使用目的としては、自動生成されるファイルなど、頻繁に更新されるけど頻繁に変更を追跡しなくても良いものに対して使う。ファイル変更の監視をしなくて良くなるので、パフォーマンスが向上する。
git update-index --assume-unchanged [ファイル名]
この操作を取り消すには--no-assume-unchangedを使う
git update-index --no-assume-unchanged [ファイル名]
--skip-worktreeと--assume-unchangedの違い
ローカルとリポジトリでそれぞれファイルの更新が行われ、マージされたときの挙動が異なる
設定ファイルにおける軽微な調整を無視したいときなどは、将来の変更が取り込まれる--assume-unchangedの方が向いていそう。
無視したファイルを確認する
git ls-files -v | grep '^[Ss]'
git ls-files -vで先頭にSがついているものが--no-skip-worktree指定したもの。--assume-unchangedを指定したものについては小文字のsがつく。grepでそれらを抽出している。
参考
ASN (Autonomous System Number) とは何か
大きいところから説明するほうがわかりやすい。
ICANN (Internet Corporation for Assigned Names and Numbers)
インターネットのアドレス空間をグローバルに管理する非営利団体がある。
IANA(Internet Assigned Numbers Authority)を通じて、各地域のRIRにASNのブロックを割り当てている。
RIR (Regional Internet Registry)
各地域におけるIPアドレスとASNの割り当てと管理を担当する組織
世界には5つある
ARIN (American Registry for Internet Numbers): 北米地域
RIPE NCC (Réseaux IP Européens Network Coordination Centre): ヨーロッパ、中東、中央アジア地域
APNIC (Asia-Pacific Network Information Centre): アジア太平洋地域
LACNIC (Latin America and Caribbean Network Information Centre): 中南米、カリブ地域
AFRINIC (African Network Information Centre): アフリカ地域
ASN(Autonomous System Number:自律システム番号)
インターネット上でネットワークを識別するために使用される番号。主にインターネットサービスプロバイダー(ISP)や大規模ネットワークを管理する組織に割り当てられる。
この分類があるおかげでルーティングの効率化ができている。
IPアドレスからASNを検索することができる
IPの情報を取得するときに、プライベートIPアドレスではASNは割り振られない。IPの情報を使ったロジックを書くときはこれを使って開発時かどうか判定できる。
ポモドーロ・テクニックをナメていた。良い。
在宅ワークは集中力との戦いである。
有名なポモドーロ・テクニック。Wikipediaには以下のように書いてある
このテクニックではタイマーを使用し、一般的には25分の作業と短い休息で作業時間と休息時間を分割する。1セットを「ポモドーロ」と呼ぶ。これはイタリア語で「トマト」を意味する言葉で、シリロが大学生時代にトマト型のキッチンタイマーを使用していたことにちなむ。
自分はこれを読んで、時間を細かく区切って集中して作業するテクニックなんだなと思い、まぁ一理あるよね〜程度でこれまで実践してこなかった。
最近読んだSOFT SKILLSの中でポモドーロ・テクニックについて述べられているが、そこでの紹介が衝撃だった。
彼がこのテクニックを効果的に使うためにしていたのは、一日に何個のポモドーロを実行したかを記録し、何個のポモドーロを達成するか目標を設定することだった。
(ジョン・ソンメズ ,SOFT SKILLS ソフトウェア開発者の人生マニュアル 第2版, 2022, p228)
要は、ポモドーロ・テクニックは集中するテクニックではなく、自分がどれだけ集中して仕事ができたかを可視化するためのテクニックだという。この視点は自分に取って新鮮だった。
この考え方の良いところは、行動目標になることだ。エンジニアの仕事の成果は、費やした時間量と必ずしも相関しない。適切な時間の使い方や道のりを進んできているのに、思ったより仕事が進まないこともある。そういうときに罪悪感に近い感情が生まれてしまうことがあるが、このテクニックを知っていればその過剰な罪悪感を減らすことができる。十分なポモドーロを成功させているならば、仕事人としては及第点だろう。(もちろん、成果を出せたらより良いのだが)逆に、ポモドーロがあまり成功できていなかったら、内省するいい機会になる。
一週間ほど試してみて、自分は一日に10ポモドーロを成功させることが良い目標だと思った。スマホやSlackのtimesをみたり、集中が途切れたと思ったら失敗とみなす。質の高いポモドーロを目指していく。