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

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

ただいまの
回答率

90.50%

  • Git

    1631questions

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

  • GitHub

    1041questions

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

Gitのログを削除したい。Git の commit idなど。

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 1,113

guitar-man

score 2

 前提・実現したいこと

Gitのログを削除したい。commit idなど。または、ブランチの削除。

 発生している問題・エラーメッセージ

Gitのログを削除する場合、
git rebase -i や git reset --hard 等で削除できると思いますが、マージされた後に、ログをまとめようと思って git rebase -i をし、まとめたいコミットで squash をしてもコミットはまとめられず新しく別れてしまうイメージになってしまいます。

イメージ説明

上記の bbb ブランチの3つのコミットのログを1つにするか、もしくわbbbのブランチ自体を削除したい。

また bbb ブランチを削除した場合は、下記のようになり、以前のログは残り続けます。
イメージ説明

 該当のソースコード

Git

 試したこと

ブランチを削除してもログやcommit id などは残り続けます。
git rebase -i をしても、ログやcommit idは削除されず、新しく分岐された状態になります。

 補足情報(FW/ツールのバージョンなど)

SourceTree 2.7.1

ここにより詳細な情報を記載してください。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

masterブランチをローカルでコミット出来る前提で、こんな感じでしょうか。

$ git checkout bbb
$ git rebase -i 'first commit のコミットID'
squashでまとめる

$ git checkout master
$ git reset --hard bbb

$ git checkout ccc
$ git reset --hard master
$ git cherry-pick origin/ccc

最後に、master,bbb,cccをそれぞれ push -f

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/01 21:13

    ブランチというのは、各枝の最新コミットIDに付けられた単なる別名に過ぎないので、消してもコミットそのものは消えないです。
    履歴とは、そのブランチが付けられたコミットから辿れる過去を表示したものなので、
    どのブランチからもbbbの3コミットを経由しないように配置し直せば良いということです。

    キャンセル

  • 2018/04/01 21:17

    完璧でした。ありがとうございました。
    今後ともよろしくお願いします!:D

    キャンセル

0

git push -fをすればできますが、よほどの事情がないのであれば基本的にやるべきではありません

というのも、origin/bbbとしてプッシュしてしまっている以上、それを書き換えることは同じリポジトリからプルした全員のリポジトリを書き換える必要が出てきてしまうからです。

gitのコミットは前のコミットのハッシュが含まれるという構造上、あるコミットを書き換えれば、それ以降のコミット全てに影響します

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/01 18:37

    `git push -f` をやるべきではないのはわかっているのですが、それでも良いので、過去のコミットログを選んで完全に削除したいです。削除したいコミットログは全て不要なログで、必要なログと必要でないログを分けたいという理由です。また今後プルする人もいなく、過去ログとして参照したいためにこの処理を実行したい理由です。画像では少ないコミット数ですが、実際のログでは大量のログがあるので、手動で確認しながら不要なコミットログを削除したいです。よろしくお願いします。

    キャンセル

  • 2018/04/01 19:43

    別のrepoを作ってそっちにきれいな履歴だけのbranchをpushするとか?

    キャンセル

  • 2018/04/01 20:13

    別のrepoを作ればできそうですね。ただ履歴は全部で5年分ぐらいあるので、できなくはないのですが、あまりにも時間がかかってしまいそうですね。

    キャンセル

  • 2018/04/01 20:45

    「また今後プルする人もいなく、過去ログとして参照したい」のであればなおのこと、操作は行うべきでないと考えます。文字通り「ログ改竄」になるわけですし。

    もちろん「大きすぎるファイルを入れてしまって、Git自体が重くなったのを解消する」とか「間違えて機密に当たるファイルを入れてしまったので、何が何でも消さなければならない」などの理由がある場合は別ですが。

    キャンセル

  • 2018/04/02 14:03

    >別のrepoを作ればできそうですね。ただ履歴は全部で5年分ぐらいあるので、できなくはないのですが、あまりにも時間がかかってしまいそうですね。

    言いたかったのはaquaSさん提示の方法で歴史改竄して、force pushする代わりに別のremoteにpushするという話なのですが・・・

    キャンセル

同じタグがついた質問を見る

  • Git

    1631questions

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

  • GitHub

    1041questions

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