デザインファイルをGitHubで管理している時に良く起こるエラーの対処法(SourceTreeの例付き)
うちの会社ではデザインファイル(主にSketchファイル)もGitHubで管理しています。 GitHubは大変便利なのですが、デザインファイルを扱うと色々面倒なエラーが起こりやすいです。 なので、トラブルシューティング的なものを書いてみました。 コマンドでGitを操作しているデザイナーは少数だと思ったので、SouceTreeでの例も載せてあります。 よかったらご覧ください。
pushしたらエラーが起こった!
デザインファイルをpushした時のエラーはほとんどが以下の2つが原因だと思います。
100MB以上のファイルをpushした
remote: error: File A.mp4 is 412.02 MB; this exceeds GitHub's file size limit of 100.00 MB
GitHubは100MB以上のファイルをpushすることはできない仕様です。
なので以前のコミットを取り消して、ファイルサイズを小さくして再度commit → pushする必要があります。
commitの取り消し方法は「commitを取り消したい!」を参照してください。
pullしてない
! [rejected] master -> master (fetch first) もしくは ! [rejected] master -> master (non-fast-forward)
この場合、単純にpullすればOKです。
pullした結果、コンフリクトした場合は下記を参照してください。
pullしたらファイルがコンフリクトした!
sketchファイルやai、psdファイルはコンフリクトしてしまうと手動で修正できません。
なのでコンフリクトしたファイルをどうしたいかによって対応が変わってきます。
pullした結果のみを採用する(自分の変更分を破棄)
コマンド
git checkout --theirs {ファイル名} git add {ファイル名}
SouceTree
コンフリクトしているファイルの上で右クリック→「競合を解決」→「相手の変更を使って解決」
右クリック→「競合を解決」→「解決済みにする」
自分の変更のみを採用する(pullしたファイルの変更分を破棄)
コマンド
git checkout --ours {ファイル名} git add {ファイル名}
SouceTree
- コンフリクトしているファイルの上で右クリック→「競合を解決」→「自分の変更を使って解決」
- 右クリック→「競合を解決」→「解決済みにする」
pullした結果も自分の変更分もどちらも採用したい
この場合はやや面倒です。
一度元に戻して、コンフリクトしたファイルのバックアップをとる→再度pullしてバックアップを元にファイルを編集するという方法になります。
- pullを取り消してコンフリクトする前の状態に戻す:「pullを取り消したい!」を参照
- コンフリクトしたファイルをどこか別のところ(デスクトップとか)にコピーする
- pullする
- 「pullした結果のみを採用する」の手順を行う
- 4.のファイルを編集して自分の変更をマージする。
pullを取り消したい!
pullしたらなんだかよくわからない状態になった時などにこの方法で元に戻せます。
コマンド
git reset --mixed ORIG_HEAD git checkout {コンフリクトしたファイル} # ファイルがコンフリクトしていた場合。
SourceTree
- 現在のブランチを選択
- 最後にcommitした時点を右クリック
「このcommitまで{ブランチ名}を元に戻す」
そのまま「OK」
- コンフリクトしていたファイルに対して「特定ファイルの変更のみなかったことにしたい!」の手順を行う。
commitを取り消したい!
commitを取り消してをやり直したい時などに使用する方法です。
コマンド
git log --oneline # commit IDを確認する git reset --soft {取り消したいcommitの1つ前のcommit ID}
SourceTree
- 現在のブランチを選択
- 取り消したいcommitの一つ前を右クリック
「このcommitまで{ブランチ名}を元に戻す」
「soft - すべてのローカル変更を保持」を選択して「OK」
今ある変更すべてなかったことにしたい!
今ある変更をすべてなかったことにしてキレイにする方法です。
コマンド
git reset --hard HEAD
SourceTree
- 現在のブランチを選択
- 最後のcommitを右クリック
「このcommitまで{ブランチ名}を元に戻す」
「hard - すべての作業コピーの変更内容を破棄 」を選択して「OK」
特定ファイルの変更のみなかったことにしたい!
ファイルの中身を確認しただけで変更してしまうsketchファイルなんかには覚えておくと便利です。
コマンド
git checkout {戻したいファイル}
SourceTree
戻したいファイルをの右側のメニューから「破棄」を選択
GitHubを使う上での注意
- GitからCloneしたフォルダにpushするつもりのないファイルを置かない
- タスクを始める場合は、変更がない状態(他に編集しているファイルがない状態) + pullしてから始める
- 変更がある場合はpushするかbranchを切るかどこか別のところに退避しておく
- 今ある変更がいらないのなら「今ある変更すべてなかったことにしたい!」でキレイな状態にする
- いろんな変更が混じっていると後々コンフリクトしたりと面倒なことが起こりやすい
- pushする前に必ずpullする
- pullしないでpushするとエラーが起こります
- 100MB以上のファイルをpushしない
- GitHubは100MB以上のファイルをpushすることはできない仕様です
- もし間違えてcommitしてしまったら「commitを取り消したい!」を参照
- pushできているのかどうかちゃんと確認する
- コンフリクトが起こりにくい運用を心がける
- デザインファイルはコンフリクトが起こると解消するのが面倒です
- 同じファイルを複数人で同時に編集しない・ファイルを細かい単位に分ける(ファイルサイズの削減にもなる)など
↓ これはイラストが豊富なのでGitHubの入門書としてはオススメです!
Web制作者のためのGitHubの教科書 チームの効率を最大化する共同開発ツール
- 作者: 塩谷啓,紫竹佑騎,原一成,平木聡
- 出版社/メーカー: インプレス
- 発売日: 2014/12/08
- メディア: Kindle版
- この商品を含むブログを見る