過去 GIT履歴の書き換えによる実際の影響は何ですか?




git 履歴 編集 (2)

私たちのプロジェクトではgitを1週間かそこら使っていましたが、私たちはそれをたくさん楽しんでいます(密接な協力関係のグループでそれを楽しむことは全く別の経験です)。 できるだけシンプルにするため、リベースや履歴の変更は行いません。 しかし、最初の1週間でいくつかの間違いを犯しました。 いくつかのコミットが行われてはいけませんでしたが、機能ブランチを間違った統合ブランチ(1.0ではなく1.1)にマージすることができました。 そして、私たちは歴史の中に入るまでこれらのことを知りませんでした。

今では歴史の書き直しについて多くの警告がありますが、私はその危険性を理解していません。 私たちは共有の裸のリポジトリを使用し、すべてのブランチがバックアップのためにそこにプッシュされます。

私はあなたが履歴を書き直す(コミットを削除すると)、後続のコミットの完全なリストはそのコミットを失うことになると思います(そして、おそらくコンパイル/作業はしません)。 私は、もしこれが起これば、私は実際にこれを歴史の頂点で修正することもできると思っています(歴史の一部を非コンパイルとして残す)。

  • 履歴を書き直すと(すべての影響を受けるブランチでコンパイル/動作します)、私の同僚は特別なコマンドを実行する必要がありますか? (言い換えれば、私がそれをうまく行ったら、彼らは「私がそれをしたことを知っていますか?」)
  • git pullでマージ失敗の対象となるかどうかわからないローカル変更を持つユーザーはいますか?
  • 私はここに何か欠けていますか?

このテーマに関する記事/チュートリアルへの参照は、本当にいいですね。


他の回答コメントで述べたように、実際にはそれぞれのコミットはユニークであり、書き直しの履歴によって新しいコミットが行われます。

あなたはそれを木の枝を切り取ってから、すぐに新しいものを栽培することと考えることができます。 彼らは同じように見えるかもしれませんが、そうではありません。 はい、ブードー魔法です。 このアナロジーでは、 元に戻すことは、ログを使って下降する支柱を支えるようなものになるので、落ちることなく道を進むでしょう。

それは、私たちに歴史を書き換えるためのいくつかの良い理由をもたらします:

  • パブリックになる前にプライベートリポジトリをスリムにしてください。たとえば、新しいローカルプライベートブランチを作成し、テストし、テストし、書き換えて、プッシュします。
  • パブリックになる前に機密データをプライベートレポから削除する。

リポジトリが公開されている(コミットされている)場合、歴史の書き直しによって誰もが苦労する可能性があります。 私はまた、プライベートレポジスでもコストをかけずにそれを避けて、良い習慣を保つことを主張する理由:そして、 書き直しの歴史は、すべてのコストで避けるべきです (これは、それを行う前に十分な配慮をすることを意味します:賛否両論!)

少なくとももう一つの哲学的かつ見過ごされた理由があります書き直された歴史は失われデータです。 本当に、 revertたgitの履歴は、 revert履歴よりも扱いにくいかもしれません。 しかし、正しく書かれていれば、すべての "混乱"は別々の枝に隠れることがありますが、それでもなお復帰が行われた時点を正確に見ることができます。 それがなぜ行われたのかについての理由や証拠があっても。

ツリーのアナロジーに戻って、サポートログを削除しても、元に戻ったブランチには漸増する曲線が表示され、美しいです!


必要なのは、Gitユーザーズマニュアルの履歴を書き換える際の問題です。

私が歴史を書き直すと(そして、すべての影響を受ける支店で働いている)、私の同僚は特別なコマンドを実行する必要がありますか?(私がそれをうまく行えば、

彼らは知っているだろうし、Gitは何かが間違っていることを不明確な言葉で彼らに伝えないだろう。 予期しないエラーメッセージが表示され、結果として生じるマージの競合を解決しようとする過程で、誤って以前のコミットを元に戻すことがあります。 この問題は実際のメッセージを作成し、何が起こっているのか興味があれば、いつでもリポジトリの一時的なコピーで試すことができます。

git pullでマージ失敗の対象となるかどうかわからないローカル変更を持つユーザーはいますか?

もちろん、上記を参照してください。

私はここに何か欠けていますか?

すべてのコストで(ほとんど)履歴を書き換えないでください!





git-rebase