1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Liveで更新中のファイルをGitで無視してシカトする方法

Posted at

Obsidian のバックアップが、Githubでできるようになったが、ターミナルでの作業のログも終わったあとに残しておきたい…。特にGeminiCLIとのやりとりなどを…。

そこで、 

script -a 2507term.txt

ということで、2025年の7月のターミナルをリアルタイムで録画している。

しかし、そのライブで録画しているテキストファイルが、Githubでコミットする時にやっかいとなっている。

2507term.txt このファイルは、ターミナルの書き込みをそのまま現在も録画中。script -a で記述してターミナルが更新中。そのようなライブで更新中のファイルを避ける何かいい方法ありますか?

こう聞くだけで、良い選択肢が Windsurf から戻ってきた。

1. .gitignoreで無視する(推奨)

# .gitignoreファイルを作成
echo "2507term.txt" >> .gitignore

2. ログファイルを別ディレクトリに移動

# ログ用ディレクトリを作成
mkdir -p logs
# ログファイルを移動
mv 2507term.txt logs/
# シンボリックリンクを作成
ln -s logs/2507term.txt 2507term.txt
# .gitignoreに追加
echo "logs/" >> .gitignore

3. スクリプトを修正して、ログの出力先を変更

# スクリプトのログ出力先を変更
script -a logs/2507term.txt

4. 現在のログファイルをGitから除外(既に追跡されている場合)

git rm --cached 2507term.txt
echo "2507term.txt" >> .gitignore

2507term.txtは2025年7月のターミナルの録画で、8月になると、2508term.txtが登場、9月には2509.txtと登場してきます。それに対応するには?

月ごとのログファイルを管理するには、.gitignore にワイルドカードを使用してパターンマッチングを行うと便利です。以下の手順で設定できます:

  1. ログファイルを無視する設定

.gitignoreに追記

echo "25??term.txt" >> .gitignore
  1. 確認
cat .gitignore
  1. 既に追跡されているファイルを除外
git rm --cached 2507term.txt
git commit -m "ログファイルをGit管理から除外"

補足
25??term.txt は「25で始まり、任意の2文字(月を表す数字)が続き、term.txtで終わる」という意味です
これで、
2507term.txt
、2508term.txt などが自動的に無視されます
ログファイルは logs/ ディレクトリに保存するのがおすすめです
ログディレクトリを使う場合

ログディレクトリを作成

mkdir -p logs

既存のログファイルを移動

mv 2507term.txt logs/

.gitignoreを更新

echo "logs/" >> .gitignore

これで、月が変わっても自動的に新しいログファイルがGitの管理外になります。

2025年の25なので、2???term.txtとするとよいですか?

はい、2???term.txt がより適切です!これにより、以下のようなファイルが全てマッチします:

2507term.txt
2508term.txt
...
2999term.txt

設定手順

.gitignoreに追記

echo "2???term.txt" >> .gitignore

確認

cat .gitignore

補足
? は任意の1文字にマッチします

年が変わる(例:2026年)場合は、26??term.txt を追加する必要があります
より包括的にするには *term.txt も検討できますが、他の
term.txt
で終わるファイルも除外されてしまうので注意が必要です

これで、来年まで安心してログファイルを管理できます!

正しい構成例

プロジェクトルート/
├── .gitignore # ここに無視設定を記述
└── logs/ # ログディレクトリ
├── 2507term.txt
├── 2508term.txt
└── ...

設定手順
.gitignore をプロジェクトのルートに作成

.gitignore に追記

echo "logs/" >> .gitignore

ログディレクトリを作成


mkdir -p logs

ログファイルを移動
bash
mv 2507term.txt logs/
これで、logs/ ディレクトリ内の全てのファイルがGitの管理対象外になります。.gitignore は必ずプロジェクトのルートディレクトリに配置してください。

Feedback submitted
Me

すると、path は projects/logs/2508term.txt ですね?  script -a を起動する時には、projects/logs/2508term.txt のpath でよい?

Revert
はい、その通りです!script コマンドを使用する際のパスについて、以下のように進めてください:

  1. ディレクトリ構成
    ~/projects/obsidian-git/ # プロジェクトルート
    ├── .gitignore
    └── logs/
    ├── 2507term.txt
    └── 2508term.txt
  2. ログを記録する場合
    bash

プロジェクトルートに移動

cd ~/projects/obsidian-git

ログを記録(8月の例)

script -a logs/2508term.txt
3. 補足
-a オプションは追記モード(既存のログに追加)
新しいファイルを作成する場合は -a を省略
ログを確認するには: cat logs/2508term.txt
4. ショートカット
毎回パスを入力するのが面倒な場合は、エイリアスを設定するのもおすすめです:

bash

.zshrc や .bashrc に追加

alias slog='script -a ~/projects/obsidian-git/logs/$(date +"%y%mterm.txt")'
これで、slog と入力するだけで、自動的に月ごとのログファイルに記録されます。

Feedback submitted
Me

alias を忘れてしまうのですが、aliasの設定一覧を見る方法は?

Revert
エイリアスの一覧を確認する方法をいくつかご紹介します:

  1. 現在のエイリアス一覧を表示
    bash
    alias
    または

bash
alias -p
2. 特定のエイリアスを検索
bash
alias | grep 検索ワード

例: alias | grep slog

  1. 設定ファイルを直接確認
    bash

zshの場合

cat ~/.zshrc | grep alias

bashの場合

cat ~/.bashrc | grep alias
cat ~/.bash_profile | grep alias
4. 現在のシェルで定義されている関数も含めて確認
bash
set
5. エイリアスをファイルに保存
bash
alias > ~/my_aliases.txt
これらのコマンドを覚えておくと便利です。特に alias だけでも、現在設定されているエイリアスの一覧が表示されます。

Feedback submitted
Me

既に追跡されているファイルを除外
git rm --cached 2507term.txt
git commit -m "ログファイルをGit管理から除外" これはなんのためにやるのですか?@terminal_selection

Revert
git rm --cached は、Gitの追跡からファイルを外すためのコマンドです。以下のような場合に使います:

なぜ必要なのか?
既にGitに追跡されているファイルを無視したい場合
.gitignore は新規ファイルには有効ですが、既に追跡されているファイルには効きません
追跡をやめたい場合は明示的に git rm --cached を実行する必要があります
ローカルには残しつつ、リポジトリから削除したい場合
--cached オプションをつけると、ローカルのファイルはそのままで、Gitの追跡からだけ外せます
あなたの場合
bash

1. 既に追跡されているファイルを追跡から外す

git rm --cached 2507term.txt

2. 変更をコミット

git commit -m "ログファイルをGit管理から除外"
補足
この操作後も、ローカルの
2507term.txt
は削除されません
次回以降の変更はGitで追跡されなくなります
リモートリポジトリからも削除するには git push を実行する必要があります
これで、
2507term.txt
はGitの管理対象外になり、今後の変更は追跡されなくなります。

次にやるべきことを整理しましょう:

  1. 現在の状態
    logs ディレクトリが作成されました
    .gitignore に logs/ と 2???term.txt が追加されました
    ただし、
    2507term.txt
    はまだGitの追跡対象です
  2. 次にやること
# 1. 現在のログファイルを移動
mv 2507term.txt logs/

# 2. シンボリックリンクを作成(Obsidianからアクセスするため)
ln -s logs/2507term.txt 2507term.txt

# 3. Gitの追跡から外す
git rm --cached 2507term.txt

# 4. 変更をコミット
git commit -m "ログファイルをlogsディレクトリに移動してGit管理から除外"

# 5. リモートリポジトリに反映
git push
3. 確認
bash
ls -l 2507term.txt  # シンボリックリンクを確認
git status         # クリーンな状態か確認
4. 今後のログ記録
bash
# 8月からのログ
script -a logs/2508term.txt

これで、ログファイルが整理され、Gitの管理から適切に除外されます。何か質問があればお気軽にどうぞ!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?