3

コミット履歴を変更/削除するにはどうすればよいですか?

私は自宅のコンピューターからプロジェクトに取り組んでおり、git config user.name はオフィスのものとは異なります。ニックが混ざりたくない。私はすでにコードを公式リポジトリにプッシュしました。

現在のコミット履歴には、次のようなログがあります。「my_home_nick」によってコミットされました

しかし、すべてのコミット メッセージを次のように表示したい: "my_office_nick" によってコミットされた

とにかくそれをすることはありますか?

要するに、ログがあると言います: x によってコミットされました

私はyによってコミットされたに変更したい

4

4 に答える 4

2
git filter-branch --commit-filter '
        if [ "$GIT_COMMITTER_NAME" = "your_home_nick" ];
        then
                GIT_COMMITTER_NAME="your_office_nick";
                GIT_AUTHOR_NAME="Office Name";
                GIT_COMMITTER_EMAIL="office@email.com";
                GIT_AUTHOR_EMAIL="author@email.com";
                git commit-tree "$@";
        else
                git commit-tree "$@";
        fi' HEAD
于 2011-12-07T11:09:02.350 に答える
2

はい、git filter-branchコマンドを見てください。必要に応じて履歴を書き換えます。

新しい歴史を作ることになることを忘れないでください。新しい履歴を作成して分岐点を作成することは、git では「巻き戻し」と呼ばれ、git rebase. 誰も彼らの仕事を古い歴史に基づいていない限りは問題ありませんが、そうすると、多くの混乱が生じます。SHA1 ハッシュによって識別される既存の履歴は不変です。

于 2011-12-06T14:48:30.663 に答える
0

Here is the same question with many answers.

You say you pushed to the "official repository", but if you are not the only commiter to this repository and somebody already pulled incorrect commits or, worse, based some changes on top of your commits, leaving incorrect commiter name will cause mush less confusion then altering history, because git really doesn't allow changing commits, it only allows creating alternative history in place of incorrect, as Jan Hudec wrote already.

于 2011-12-06T15:28:51.860 に答える
0

次のオプションの 1 つ以上を使用できます。

  1. コマンド git rebase --interactive を使用して、コミットをスカッシュ/再編成できます

  2. my_home_nick を使用して変更を公式リポジトリにプッシュしていない場合は、別のクローンを作成し、正しいユーザー名で変更をプル/マージできます

  3. git filter-branch を使用してコミッター名を修正できます

于 2011-12-06T14:51:16.143 に答える