1. ホーム
  2. ギット

[解決済み】gitに個々の行を無視するように指示する方法、つまり特定のコード行をgitignoreする方法【重複

2022-04-12 20:28:16

質問

.gitignore はファイル全体を無視することができますが、コーディング中に特定のコード行を無視する方法はありますか?

私はプロジェクトに同じデバッグ行を頻繁に繰り返し追加し、コミットする前に削除するのを忘れないようにしなければなりません。その行をコードに残したまま、gitに無視させたいと思っています。

解決方法は?

でなんとなくできる方法です。 gitフィルター :

  1. gitattributesファイルを作成/オープンします。
    • <project root>/.gitattributes (レポにコミットされます)

      または
    • <project root>/.git/info/attributes (レポにコミットされません)
  2. フィルタリングするファイルを定義する行を追加します。
    • *.rb filter=gitignore という名前のフィルタを実行する。 gitignore すべての *.rb ファイル
  3. を定義します。 gitignore フィルタを gitconfig :
    • $ git config --global filter.gitignore.clean "sed '/#gitignore$/d'" つまり、以下の行を削除してください。
    • $ git config --global filter.gitignore.smudge cat つまり、レポからファイルを取得するときは何もしません。

注意事項

もちろん、これはルビーファイルの場合であり、行末が #gitignore でグローバルに適用されます。 ~/.gitconfig . あなたの目的に合わせて、これを変更してください。

警告!

この場合、作業ファイルはレポとは異なるものになります (もちろん)。チェックアウトやリベースを行うと、これらの行は失われてしまいます! チェックアウト、リベース、プルによってこれらの行は繰り返し失われるので、このトリックは無駄に思えるかもしれませんが、私はこれを利用するために特定のユースケースを持っています。

ただ git stash save "proj1-debug" フィルタが非アクティブの間 (で一時的に無効化すればよい)。 gitconfig など)。こうすることで、私のデバッグコードは常に git stash apply これらの行が誤ってコミットされることを心配することなく、いつでも自分のコードに追加することができます。

この問題に対処するためのアイデアはあるのですが、実装はまた今度やってみようと思います。

Rudiとjw013がgit filtersとgitattributesについて言及してくれたことに感謝します。