Git Desktopでpushが出来ない(大きいファイルをpushしてしまった時)
いつもgitを間違えてギットと読んで後輩に指摘されるマンです。
gitあんまり馴染みがなかったのでDesktopアプリを主に使うマンなんですが突然Git Desktopでpush(sync)出来ない事態に襲われました。
メモしながらやったので結果だけ知りたい方は(危険です)解決編をご覧あれ。
最初の原因:重いファイルをcommit,pushした。
shellで
git push
と打つと,「 this exceeds GitHub's file size limit of 100.00 MB 」と出ます。
Gitでは100MB以上のファイルpushできないようです。
gitignoreの変更と反映
gitで不要なファイルを無視する設定を保存するために.gitignoreというファイルがあります。
これに先程の.matファイルを登録したのですがそれでもダメでした。
git rm --cached . git add .gitignore git commit -m "add file to .gitignore" git push origin master
一行目で全てキャッシュを消して,その後にgitignoreを変更,変更をcommitしてpushするという流れのようです。
これでも上手く行きませんでした!
大きいファイルをpushしてしまったときの対処法
先程の変更でもダメです。
何故なら大きいファイルを追加・変更したという情報がgitに残っているのでこいつはいつまでも追加対象から外れてくれないのです。
公式でもこの問題について言及してくれています。
Removing files from a repository's history - User Documentation
結論これではダメでした。
また,以下のブログが非常に参考になりました。
www.walbrix.com
過去の履歴全てから削除するとのこと。
以下のブログでも同様のことを言っています。
Gitリポジトリから容量の大きいファイルを履歴から抹消する | eureka tech blog
$ git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch でかいファイル' --prune-empty --tag-name-filter cat -- --all $ git commit --amend -CHEAD
これででかいファイルの情報を過去に渡って潰すわけです。
しかし,その後のコミットであえなく爆死。
そして出て来るWarning。
WARNING: Ref 'refs/heads/master' is unchanged WARNING: Ref 'refs/remotes/origin/master' is unchanged
いろいろ調べましたがこの方向性は結局あきらめました。
git rebaseで過去を改変?
rebaseで過去の関連コミットを全てまとめてしまえばいけるのではと思い立って行動。
git rebase -i HEAD~k
で直近からk番目のcommitをまとめることが出来ます。
これで過去のクソコミットをまとめてしまおうという算段。
すると…以下のエラーが
You must edit all merge conflicts and then mark them as resolved using git add
調べると手動でconflictをなんとかしろとのこと。憤死。
原因
この前の段階でWeb側で.gitignoreを変更したのが大きな原因らしいです。
無知で動くの本当に良くないですね。
解決編
本当は該当ファイルを撤去して,logを全て飛ばすので十分なんでしょうが,今回はいろいろと込み入ったため,
commitを強制的にふっ飛ばして解決するという手法をとりました。
git rebase -i 十分な分のcommitを遡る
そして,文頭に出てくる幾つかのcommitを削除消します。
これがスムーズに行けば一連の問題はおそらく解決です。
そして強制的にpushするために
git push -f
をします。これも禁じ手の1つで複数人で管理士ているファイルでやっては絶対にいけません。
なお,rebaseでなんか言われたときには
git rebase --skip
でぶっ飛ばしちゃいましょう。
なお,これは本当に最終手段に近いと思ってください。
考えるんだ…まだ手はあるはずだ…
あとバックアップは忘れずに。
総評・感想
とりあえず,
shellときちんと向き合うこと。
Web上のgitを安易に編集しないこと,
事前にきちんとgitignoreを管理すること,
そしてgit外でもデータをバックアップしておくことが肝要です。
まじで!!!
WindowsコマンドラインからPDFをCrop
この手の記事は何度か書きましたが,
コマンドラインからCropするメモを残します。
(大体同じことを3回調べたらもう記事化するつもりでいます。)
大前提:PDFの余白について
matlabやPPTでpdfを作ったり,
texに付属するps2pdf.batを使って
ps2eps.bat hoge.eps hoge.pdf
でepsをpdfにしたりできます。
同様にepstopdf.plを動かすのも良いでしょう。(こちらはバージョンが1.5になる都合で時々困るんですが)
こいつらはとんでもない余白を持っているので,いつだかの記事で余白を切り取る手法を紹介しました。
bcpdfcrop
有名なpdfcropにpdfcfop.plがあります。
これはperlを入れていることが前提ですが,まとめて処理できてとても良いです。
Perl入れたくない!という方には以下のbcpdfcropやtcpdfcropのbatファイルが用意されています。
GitHub - aminophen/bcpdfcrop: Windows batch file for pdfcrop
githubからbatファイルをpathの通った所において,
とすることでcropしたPDFを作成可能です。
bcpdfcrop.bat hoge.pdf
batファイルの変更
但し,デフォルトではファイル名のうしろに-cropとつくので名前を指定するか
bcpdfcrop.batやbcpdfcrop_multi.batを開いて「-crop」を全て「_c」とかに変更します。(ハイフンをファイル名に使いたくない)
まとめて実行
まとめて実行するには,cropしたいフォルダに移動して
bcpdfcrop.bat *.pdf
とすれば全てのpdfをcropしてくれます。
できれば名前を変えずそのまま更新するには…どうすれば?
名前を変えずに全てのPDFをCropするbatを作成
2018年8月追記:製作者の方からコメントをいただきました。
「元のPDFを上書きしない」との理念があるようで,同じ名前を指定できないようになっているそうです。
コメントの通り,以下の手順を用いるなどの回避策をうちましょう。
(1) bcpdfcrop.bat を使って foo.pdf → foo_c.pdf でクロップする
(2) del foo.pdf で元のファイルを削除
(3) move foo_c.pdf foo.pdf(または ren コマンド)でファイル移動
bcpdfcrop.batに基づいてPDFをそのままの名前で再cropするbatを作成しました。
名前は「bcpdfcrop_all.bat」とします。
@echo off for "usebackq delims==" %%i IN (`dir/*.pdf`) do bcpdfcrop.bat %%i %%i
あれ~なんかおかしい…
あとで考えよう…
ショートアニメレビュー
ショートアニメ:一回の放送時間が通常のアニメ(24分)に比べて短いもの。
総じて名作や迷作が多く生まれるがすぐ忘れてしまうため、
なんか見たらメモっておくようにしよう。
ネットで他の人の感想見て喜んじゃうタイプの人間なので。
TO BE HERO
TO BE HERO | TVアニメ『トゥ・ビー・ヒーロー (TO BE HERO)』アニメ公式サイトがオープン!!10月5日(水)18時30分よりTOKYO MXにて放送予定!
日中合同で作られた10分程度のショートアニメ。
作風はギャグ調。全体的に早口かつ下ネタが強く、
アザゼルさん程度の耐性は必要だと思われる。
だが、どうか、最後まで見て欲しい。
やや退屈と思わせる序盤から終盤きちんと纏めきったストーリー構成は評価に値する。
(単純に筆者が好きなパターンなだけなのだが)
作画や一部声優の演技など未熟な点は多いが、
筆者は心温まったので満足。
あと銀魂の杉田さんや海馬社長の津田さんをはじめ地味に声優陣が豪華。
下ネタは銀魂にも負けずにお下劣だけど、、、(しかし一部伏線だったりもする)
EDは中国語なので正直解説が必要だろう。サーキュレーションとかの脳がとろける系。
公式で可愛い女の子がダンスをしている。うん、かわいい。
ネット上であまりに感想がなくて寂しかったので誰か見たらコメントしてくれ。
お手軽関数フィッティングチャレンジ
過去記事でフィッティングチャレンジしたんですけど,
今一度復習してみようという内容です。
過去記事との変更点
ossyaritoori.hatenablog.com
ossyaritoori.hatenablog.com
- Levenberg-Marquardt法を用いた二変数関数,6変数のフィッティング。
- jacob関数を用いてヤコビ行列計算を簡略化。
- 関数の値を計算し,ノイズを載せることで観測データをシミュレートした。
- ezsurfを用いた図示(fsurf)の方が良いらしい。
プログラム
解説(略)
画像処理のテスト用のデータベース
趣味で画像処理を行う人から研究で行う人に至るまで
テストあるいは評価を行う為の画像・動画群のデータベースが必要であることが多々あるかと思います。
幾つかのデータベースをメモしておきます。(使用する際は引用を忘れずに)
ImageProcessingPlace : 各データベースへのリンクまとめ
様々なデータベースへのリンクがリストアップされているとても頼もしいサイトです。
でもこの中から自分の欲しいデータを探すのはまた一苦労な為,この中からどれを選ぶかも含めて今度メモしようと思います。
とりま,気がついたら更新していく所存であります。
Lena等の有名な画像群のデータベース
"Standard" test images (a set of images found frequently in the literature: Lena, peppers, cameraman, lake, etc., all in uncompressed tif format and of the same 512 x 512 size).
となっている所から以下のような有名な画像群がダウンロード出来ます。
更新待ち
USEGS : 航空写真,衛星写真のデータベース
Aerial Photography | Earth Resources Observation and Science (EROS) Center
航空写真用のデータベースが主に公開されています。他にも幾つかデータがありますが,精査はまだしていません。
ある地域の画像セットをダウンロードする他,地図上の任意の点から画像を切り取って保存することも可能です。
学内WifiにiOS9から接続できない問題
Abstract
所属する研究棟のルータが死んでいるだけのようです。
序論
UpdateしたiOSから学内wifiに接続出来ない現象が起きています。
具体的に言うとUTokyoWifiやeduroamですね。
どうやら私だけではないようで
eduroamのサイトで関係ありそうな記述が。
eduroamの認証が失敗する事例について - eduroam JP
「FreeRADIUS 3.0.5-3.0.7はTLS機能に不具合があり、 3.0.8以降へのアップデート(または一時的回避策としてTLS 1.2の無効化) が必要です。」
は?
どうやら以下の記述にあるように認証に用いる際の証明書の形式が変更になったとかで正しく認証してくれないようです。
support.apple.com
WPA2EnterprizeにおいてiOSが違う形式を使っていたことを初めて知りました。
以下のサイトにアクセスしてEAP形式に対応できるようにしろとのこと。
https://cat.eduroam.org/
(Eduroamのサポートページ)
検証
取り敢えず、別キャンパスでの双方の接続ができることを確認。
これは完全にルータ側の問題であると思われます。
結論
早くなおして
Anacondaがプログラムの実行を阻害した話?
連投すみません.
SSDに換装したPCでもう一度OpenCVを入れなおしてプログラムを走らせたところ
よくわからないエラーに悩まされました.
参考にした記事はこれ.
ossyaritoori.hatenablog.com
それでエラー文で探したところ,環境変数からanacondaのpathを消せとのこと.
/home/User/anaconda3/lib/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by ./aseprite) · Issue #1281 · aseprite/aseprite · GitHub
消したらうまく行きました.
anacondaでいろいろ導入しようと思った場合どうするんだろう?
ますますわからなくなったのでした.
自力で入れたpythonに対してあとからanacondaを導入するのはありかナシか.
誰かおしえてください.