🗝️
Gitコマンド入門::rebase(-i,exec,コマンド実行)「第二十六回」
さあ、今回は、exec コマンドを試してみましょう! とはいっても、何をすれば良いのか、初心者は悩みますけどね~ まあ、exec には自由に実行させたい処理を記述できるので、やれることは無限大ですけど、、、今回は、先日のリポジトリーを使って、デバッグ情報を、ログファイルに出力してみます。
前回の記事は、こちら!
git本家本元の情報はこちらから!
テスト用のリポジトリーの作り方は、以下を実行!
echo "# rebase exec" >> README.md
git add README.md
git commit -m "1st"
echo "A" >a.txt
git add a.txt
git commit -m "A"
echo "B" >b.txt
git add b.txt
git commit -m "B"
echo "C" >c.txt
git add c.txt
git commit -m "C"
ほぼ、前回と同じです。冒頭のコメントだけ、rebase exec に変更しました。(笑)
git rebase -i --root を実行して、コミット時のハッシュ値の一覧をコピーして置きます。
$ git rebase -i --root
// vi エディターが起動するので、以下の4行をコピペ
pick 3d996c0 1st
pick 1a4dbc4 A
pick cbfc283 B
pick 9724410 C
今回は、テキスト量が多いので、別ファイルにて編集しましたが、みなさんは、それぞれ好きなエディターで、好きな処理を記述してくださっても、OKです!
私は、こんな感じで、編集しました!
以下のテキストを、git rebase -i --root
を実行直後、viエディターの編集画面にて、コピペして貼り付けて、余分な4行は削除して[1]、Esc + wq で、処理を実行させてください。
exec echo "# rebase exec" >file.log
exec echo "# 1st" >>file.log
pick 3d996c0 1st
exec ls -l >>file.log
exec echo -e "\n #A" >>file.log
pick 1a4dbc4 A
exec ls -l >>file.log
exec echo -e "\n #B" >>file.log
pick cbfc283 B
exec ls -l >>file.log
exec echo -e "\n #C" >>file.log
pick 9724410 C
exec ls -l >>file.log
viエディター編集後「Esc+wq」の実行結果です!
git rebase -i --root
// vi起動後、上記のexec処理に書き換えて、Esc + wq で実行!
Executing: echo "# rebase exec" >file.log
Executing: echo "# 1st" >>file.log
Executing: ls -l >>file.log
Executing: echo -e "\n #A" >>file.log
Executing: ls -l >>file.log
Executing: echo -e "\n #B" >>file.log
Executing: ls -l >>file.log
Executing: echo -e "\n #C" >>file.log
Executing: ls -l >>file.log
Successfully rebased and updated refs/heads/main.
// 無事、記述どおりに処理が実行されました!
file.log の中身を確認!
$ cat file.log
# rebase exec
#1st
合計 8
-rw-rw-r-- 1 shiozumi shiozumi 14 2月 25 13:30 README.md
-rw-rw-r-- 1 shiozumi shiozumi 19 2月 25 13:30 file.log
#A
合計 12
-rw-rw-r-- 1 shiozumi shiozumi 14 2月 25 13:30 README.md
-rw-rw-r-- 1 shiozumi shiozumi 2 2月 25 13:30 a.txt
-rw-rw-r-- 1 shiozumi shiozumi 149 2月 25 13:30 file.log
#B
合計 16
-rw-rw-r-- 1 shiozumi shiozumi 14 2月 25 13:30 README.md
-rw-rw-r-- 1 shiozumi shiozumi 2 2月 25 13:30 a.txt
-rw-rw-r-- 1 shiozumi shiozumi 2 2月 25 13:30 b.txt
-rw-rw-r-- 1 shiozumi shiozumi 338 2月 25 13:30 file.log
#C
合計 20
-rw-rw-r-- 1 shiozumi shiozumi 14 2月 25 13:30 README.md
-rw-rw-r-- 1 shiozumi shiozumi 2 2月 25 13:30 a.txt
-rw-rw-r-- 1 shiozumi shiozumi 2 2月 25 13:30 b.txt
-rw-rw-r-- 1 shiozumi shiozumi 4 2月 25 13:30 c.txt
-rw-rw-r-- 1 shiozumi shiozumi 583 2月 25 13:30 file.log
さあ~ みなさんはどうですか? HEADを移動させながら、それぞれのコミット時点で、ファイルリストを取得するだけの処理ですが、想像していた通りに、gitが動作していることが分かりますね!
今回は、デバッグ的な使い方をしてみましたが、実践では、exec の後に、git コマンド記述して、さらに、リポジトリーを操作するようですね。まあ、さすがに、exec git rebase と書くことはしないと思いますけど。そんな、オカルトなネスト処理は想像しないように!(^^;;
それでは、今回はここまで、お疲れ様でした!
-
余分な4行は、pick 3d996c0 1st ~ pick 9724410 C 迄ですね。 ↩︎
Discussion