12

Gitブランチヘッドとタグはコミットへのポインターであり、これらのポインターは暗黙的に(の後にcommit)または明示的に(の後に)移動できますbranch -m

Gitはこれらのポインターの状態の履歴を記録しますか?

これには少なくとも2つの理由があります。

  • 支店長が指した場所を含め、2日前のレポの状態を確認します。
  • 一部のコミットが到達不能になるような方法で誰かがブランチヘッドを移動したために履歴が失われないようにするため。

Mercurialは各コミットにブランチ名を格納するため、上記が可能であることに注意してください。

繰り返しになりますが、Gitでは.git / refs /バージョンの内容が管理されていますか、それともそうする方法はありますか?

(私はチームのMercurialまたはGitを決定しようとしています。参照を含め、共有リポジトリへのすべての変更が記録されていることを確認したいと思います。開発者がプライベートリポジトリに対して何をするかは関係ありません。)

ありがとうございました。

4

3 に答える 3

9

それらはバージョン管理されていませんが、reflog機能により、間違いを元に戻すために使用できるローカル履歴が保持されます。ただし、誰かがブランチ ヘッドを「巻き戻して」最後からいくつかのコミットを破棄すると、別の開発者がそのブランチのチェックアウトを更新しようとするとすぐに明らかになります--force。その時点で、コミットを共有リポジトリに簡単にプッシュできます。

于 2011-05-07T02:52:39.173 に答える
2

ブランチ履歴をバージョン管理する Gerrit のようなエンタープライズ Git サーバーの拡張機能があります。ブランチが非早送り方法 (push -f) で削除または更新された場合、必要に応じて復元でき、ガベージ コレクションによってプルーニングされないように、特別な参照の下で以前のバージョンに戻されます。Gerrit 管理者は、法的な理由で必要に応じて、選択したコミットを引き続き削除できます。

于 2013-01-07T17:25:11.997 に答える