Atlassian Sourcetreeを管理ツールとして使用しながら、オンラインリポジトリ(オリジン)と連携するbitbucket上のリポジトリがあります。
20のコミットがあるとしましょう。
Sourcetreeは何らかの理由でプロジェクト設定を変更する楽しみを共有しており、私は誤って2つのコミットをプッシュしました(たとえば、マシンを使用する他の同僚として、コミット15と16を使用します。
私は自分の名前とメールをそれらのコミットに入れたいと思います。
このような木を想像してみましょう(枝なし、マスターだけ)
コミット番号->コメント->コミットID->作成者/メール
[email protected]の誰かが私になるはずです。
私はレポの管理者です。
簡単な方法でそれを行う方法は?Sourcetreeから可能ですか?ターミナルからやるべきですか?
.gitフォルダー内のファイルを手動で変更し、新しいリポジトリを作成してそこでコミットすることは、実行可能な解決策でしょうか?
重複した回答がうまく機能しないことを示唆しているため、質問は重複していません。
編集-あまり多くの研究なしでそれを行う方法を探している人のための正しい手順
誰もがこれを重複としてマークしているのに、そうではないので、他の手順は不完全であり、問題や質問でgitにあまりクールではない誰か(私のような)を残すので、正しい手順は次のとおりです。
SourceTreeから、リポジトリが開いているときに右上にあるターミナルボタンでターミナルを起動します。
次に、これを貼り付けて実行し、ケースに適した置換を使用します
#!/bin/sh
git filter-branch --env-filter '
OLD_EMAIL="[email protected]"
CORRECT_NAME="Your Correct Name"
CORRECT_EMAIL="[email protected]"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_COMMITTER_NAME="$CORRECT_NAME"
export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_AUTHOR_NAME="$CORRECT_NAME"
export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags
ただし、これにより、セカンダリの「バックアップ」ブランチが生成されます。これは、履歴を書き換えるときに、多くの疑問が残るためです。
「バックアップ」ブランチを削除し、実際に新しい履歴をリポジトリにプッシュして、正しい名前/メールで新しい履歴を見つけるには、この追加の手順を実行する必要がありました。
git push --force --tags origin 'refs/heads/*'
ここに完全なガイドがあります。
私を正しい方向に向けてくれたすべての人に感謝します。
これを行うための「簡単な」方法はありません。作成者とコミッターの情報はコミットの一部です。それらを変更すると、コミットIDが変更されます。コミットIDを変更すると、後続のコミットの親情報を変更する必要があり、それによってそれらのコミットのIDが変更されます。言い換えれば、それを変更するには、履歴を書き直す必要があります。
履歴の書き換えは特に難しいことではありませんが、影響を受けるコミットがすでに共有されている場合(または、より正確には、影響を受けるコミットの「古い」バージョンがすでに共有されている履歴から削除される場合)、かなりのコストがかかります。ブランチの)。
このような書き直しを行うには、すでに「古い」コミットを受け取っている他のすべての人と調整する必要があります。レポを持っている人が多いので、これは負担が大きすぎるとよく言われます。その場合、書き換えを行う余裕はありません。そのアドバイスを無視すると、おそらく他の誰かが受け取ったエラーを「修正」しようとすると、書き換えが取り消され、さらに大きく調整されるまで誰にもほとんど役に立たない真に分裂したリポジトリができあがります。それをクリーンアップするための努力が完了しました。
それでも、いくつかのコミットの電子メールアドレスをクリーンアップするためだけに履歴の書き換えを行いたい場合git filter-branch
は、--env-filter
オプションを使用してチェックアウトしてください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加