質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Q&A

解決済

3回答

2663閲覧

gitをリセットしたい

daiki002

総合スコア68

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

0グッド

0クリップ

投稿2018/07/14 04:58

やりたい事

赤枠のローカルコミットで間違えてGitHubの制限である100MBを超える巨大なtxtファイルを含めてしまったのでGitHubにpushできなくなりました。

なので、このコミットのうち巨大なテキストファイルだけ取り消したいです。

赤枠までのコミットデータをすべて消してやり直す方法は見つかったのですが、赤枠以降もコミットしているのでこれらのコミットデータは消したくありません。

また、有料なので Git Large File Storageも利用したくありません。

巨大なテキストファイル1つだけ消せれば解決なのですが良い方法はありますでしょうか?

$ git push origin master Counting objects: 86, done. Delta compression using up to 12 threads. Compressing objects: 100% (82/82), done. Writing objects: 100% (86/86), 6.51 MiB | 404.00 KiB/s, done. Total 86 (delta 29), reused 0 (delta 0) remote: Resolving deltas: 100% (29/29), completed with 13 local objects. remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com. remote: error: Trace: ************************** remote: error: See http://git.io/iEPt8g for more information. remote: error: File static/imgs/***.txt is 137.72 MB; this exceeds GitHub's file size limit of 100.00 MB To https://github.com/***/***.git ! [remote rejected] master -> master (pre-receive hook declined) error: failed to push some refs to 'https://github.com/***/***.git'

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

こんにちは。

filter-branchとかを使えばいいのですが、普段なかなか使わないコマンドなので、よくあるコマンドで実現する方法を書いておきます。


  1. masterのブランチをバックアップしておく(念のため)

git branch temp

  1. 目的のcommitを含む範囲でinteractive rebase

git rebase -i ******

  1. エディタ上で該当のcommitをpickからeditへ書き換えて保存

  2. 編集したいcommitでrebaseが止まるので、Addしたくなかったファイル名を指してrm

git rm ***.txt

  1. commitし直してからrebaseを再開

git commit --amend
git rebase --continue


この操作でgitのログから特定ファイルを削除することができます。

投稿2018/07/14 06:01

tamoto

総合スコア4105

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

daiki002

2018/07/14 07:22

ありがとうございます。 無事に対象のテキストファイル削除が完了し、GitHubにpushが成功しました。
guest

0

git filter-branchという、過去のコミットまで書き換えていくコマンドがあります(参考)。

投稿2018/07/14 05:03

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

そのファイルを取り消したいというのは、そのファイルをPUSHしなくていいとういうことでしょうか?
それともPUSHはしたいということでしょうか?

取り消したいのであれば該当ファイルをGITの監視下から削除してコミットし直せば良いと思いますが。

投稿2018/07/14 05:33

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2018/07/14 06:00

100MB超のファイルが「Gitの履歴に載っている」時点でGitHubへのプッシュを拒否されますので、削除した状態をあとからコミットしても解消できません。
退会済みユーザー

退会済みユーザー

2018/07/14 06:45

そうなんですね。失礼いたしました。 知識不足でした。
退会済みユーザー

退会済みユーザー

2018/07/14 06:51

pushの対象から外せば問題ないですかね?? git rm --cached <対象ファイル名> // ファイルをpush対象から外す git commit --amend -CHEAD // 変更内容をコミットする git push // pushする
maisumakun

2018/07/14 06:53

コミット直後なら--amendでも問題ないです。 今回のように、削除したいファイルが入ったコミットの後にコミットがあってそれを活かしたい場合には、別な手段が必要となります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問