git管理しているディレクトリで修正されたファイルは、git statusで、すぐ確認できますが、
git管理していないディレクトリへコピーする時等、変更ファイルのみが必要になる時があります。
今回は変更ファイルのtarball化です。
まずはgit clone。(本ブログでも使用している、私が学習用で管理しているgitレポジトリです)
takk@deb83:~$ git clone https://github.com/takkete/bread.git Cloning into 'bread'... remote: Counting objects: 34, done. remote: Compressing objects: 100% (14/14), done. remote: Total 34 (delta 3), reused 0 (delta 0), pack-reused 17 Unpacking objects: 100% (34/34), done. Checking connectivity... done. takk@deb83:~$ cd bread
さっそく、たまたま修正したいファイルがあったので修正しました。内容は割愛します。
ではgit statusで変更されたファイルの一覧を確認します。
takk@deb83:~/bread$ git status On branch master Your branch is up-to-date with 'origin/master'. Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: mcu/avr/attiny2313/makefile modified: mcu/avr/attiny85/makefile no changes added to commit (use "git add" and/or "git commit -a") takk@deb83:~/bread$
ファイル一覧のみをsedで抽出します。
takk@deb83:~/bread$ takk@deb83:~/bread$ !! | sed -n 's/^.*modified: \(.*\)$/\1/p' git status | sed -n 's/^.*modified: \(.*\)$/\1/p' mcu/avr/attiny2313/makefile mcu/avr/attiny85/makefile takk@deb83:~/bread$
後はtarで固めるだけです。
takk@deb83:~/bread$ !! | xargs tar rf t.tar git status | sed -n 's/^.*modified: \(.*\)$/\1/p' | xargs tar rf t.tar takk@deb83:~/bread$ tar tf t.tar mcu/avr/attiny2313/makefile mcu/avr/attiny85/makefile takk@deb83:~/bread$
コメント