4

私は git に関してかなりの初心者であり、通常は git commit、pull、push だけが私が行うコマンドです。最近、コミットがデフォルトの名前と電子メールに設定されていることに気付き、それを変更したいと思いました。愚かなことに、どこかの投稿で見つけたこれを実行しました:

git filter-branch -f --env-filter "GIT_AUTHOR_NAME='Newname'; GIT_AUTHOR_EMAIL='newemail'; 
GIT_COMMITER_NAME='Newname'; GIT_COMMITTER_EMAIL='newemail';" HEAD

これは自分のコミットだけを変更すると思っていましたが、代わりに、リポジトリ内のすべてのコミットが私の名前と電子メールを持つように変更されました。もちろん、私の「愚かさ」を続けるために、私は変更をプッシュしました。

また、履歴が失われたようで、github のすべてのコミットにも重複したエントリがあるようです。私の名前とメールアドレスのあるものと元のもの。

これを元に戻す方法はありますか?たぶん、以前のプルのコピーを使用して元の情報をプッシュしますか?

4

3 に答える 3

7

filter-branch コマンドを実行した後にルーズ オブジェクトをクリーンアップするために何もしていない場合は、マスター ブランチをリセットできます (コマンドを実行したときに HEAD がマスターであったと仮定します)。

git reset --hard refs/original/master
于 2012-04-18T14:06:28.950 に答える
1

まだクリーンアップしていない場合は、次のコマンドでブランチをリセットできます。git reset --hard refs/original/masterこれにより、試行前にすべての元のファイルがリロードされます。

git filter-branch -f --env-filter "GIT_AUTHOR_NAME='Newname'; GIT_AUTHOR_EMAIL='newemail'; GIT_COMMITER_NAME='Newname'; GIT_COMMITTER_EMAIL='newemail';" "--tag-name-filter cat -- --all"

于 2012-04-18T14:12:27.420 に答える
1

同僚が git の専門家と話すことができ、以前のコピーからの「git push -f」で問題が解決したようです。また、コピーに対して git pull --rebase を実行する必要がありました。

助けてくれてありがとう。

于 2012-04-19T11:46:34.400 に答える