Git倉庫のコミット履歴で著者情報を変える方法
両方のワーク関連の個人的なプロジェクトに取り組んでいるときは、しばしば、あなたは対応するリポジトリにプッシュするためにGit資格情報の間を前後に交換する必要があります.そして、時々、あなたは忘れます.🤷♂️
このポストでは、あなたの倉庫の歴史のコミットのために著者名/電子メールを速く変えるいくつかの異なるオプションを提供します.そして、間違ったコミット著者(または誤った著者の詳細)を正しい情報で交換します.まず、我々はコミットを編集するための安全な方法のいくつかを通過し、最終的に、私は共有するcustom script それはあなたのために重いリフトを行います.
変更する方法の著者情報を変更するには、自分自身を見つける状況によって異なります. あなたがコミットを行う前に、著者の情報を変更する必要がありますか? コミットはローカルかリモートか? どのように多くのコミットを変更する必要がありますか?我々はコミット(またはそれらのすべてさえ)の多くを変更することについて話していますか?
コミットを行う前にアイデンティティを変更する必要がある場合は、情報を更新するには3つの方法があります.このセクションに記載されたメソッドのどれも前のコミットに影響しません.
次のコミットだけの著者の電子メール/名前を変更する必要がある場合は、
現在のリポジトリ内のすべての将来コミットに使用される著者情報を変更するには、
あなたのコンピュータがグローバルレベルで使用する著者情報を更新するには
それで、すでに作られたコミットの著者情報を編集する必要がありますか?まず最初に、あなたのコミット履歴を編集する安全な(R)方法を行きましょう.
あなたが最後のコミットを編集する必要があるならば
コミット履歴を編集する最も簡単な(そして最も安全な)方法はgitの対話を使用することです
まず最初に、あなたが編集したいものの前のコミットのハッシュを見つけ、Rebaseコマンドに渡します.
私はgitを実装しました
Download the script Gitthubから簡単にアクセス可能な場所に保存します.
スクリプトファイルのパーミッションを変更して実行します.
誤ったコミット履歴を持つリポジトリに移動する
スクリプトを実行する
Gitフィルタの分岐を抑制したい場合は、次の行を追加します
使用法: 例: あなたがコミット履歴に置換したい著者の古い/不適切な電子メールアドレス.
使用法: 例: 新しい/訂正された電子メールアドレスは、一致するコミットに置き換えますold-email アドレス.
使用法: 例: 新しいコミット著者情報の新規/修正名.(引用符で名前を囲むようにしてください)
使用法: デフォルト 例: 変更したいリモートのリポジトリの名前.
使用法: スクリプトが非対話的シェルで正常に実行されます(すべての必須フラグが設定されていると仮定します).
値を
使用法: 現在のディレクトリと異なる場合は、リポジトリ(“. git”ディレクトリ)へのパスを設定します.これは絶対パスやカレントワーキングディレクトリへの相対パスである.
このオプションは
使用法: 作業ツリーへのパスを設定します.これは、絶対パスまたは現在の作業ディレクトリに相対パスです.
使用法: ヘルプコンテンツを表示します.
使用法: バージョン情報を表示します.
このポストでは、あなたの倉庫の歴史のコミットのために著者名/電子メールを速く変えるいくつかの異なるオプションを提供します.そして、間違ったコミット著者(または誤った著者の詳細)を正しい情報で交換します.まず、我々はコミットを編集するための安全な方法のいくつかを通過し、最終的に、私は共有するcustom script それはあなたのために重いリフトを行います.
何を成し遂げようとしているのですか。
変更する方法の著者情報を変更するには、自分自身を見つける状況によって異なります.
コミットを行う前に著者情報を変更
コミットを行う前にアイデンティティを変更する必要がある場合は、情報を更新するには3つの方法があります.このセクションに記載されたメソッドのどれも前のコミットに影響しません.
次のコミットのみの著者の詳細を変更する
次のコミットだけの著者の電子メール/名前を変更する必要がある場合は、
--author
指定した情報をコミットします.git commit --author="Marty McFly <[email protected]>" --message="Changing text on prom banner"
現在のリポジトリの著者情報を変更する
現在のリポジトリ内のすべての将来コミットに使用される著者情報を変更するには、
git config
ここでしか適用されない設定# Navigate to repository
cd path/to/repository
git config user.name "Marty McFly"
git config user.email "[email protected]"
著者名と電子メールをグローバルに変えてください
あなたのコンピュータがグローバルレベルで使用する著者情報を更新するには
--global
フラグ:git config --global user.name "Marty McFly"
git config --global user.email "[email protected]"
以前のコミットの履歴の編集
それで、すでに作られたコミットの著者情報を編集する必要がありますか?まず最初に、あなたのコミット履歴を編集する安全な(R)方法を行きましょう.
最後のコミットを編集
あなたが最後のコミットを編集する必要があるならば
--amend
旗はあなたの友人です:git commit --amend --author="Marty McFly <[email protected]>"
対話型Rebaseによる複数のコミットの編集
コミット履歴を編集する最も簡単な(そして最も安全な)方法はgitの対話を使用することです
rebase
コマンド.まず最初に、あなたが編集したいものの前のコミットのハッシュを見つけ、Rebaseコマンドに渡します.
# Passing the last "good" commit hash
git rebase -i 9b4351e2
それから、あなたがedit
キーワードedit 9b4351e2 Changing text on prom banner
edit 4d0f36c0 Setting flux capacitor to 1955
pick f4b39b80 Adding plutonium
Gitは、各コミットを通して、あなたが望むように編集することができます.Stopped at 9b4351e2... Changing text on prom banner
You can amend the commit now, with
git commit --amend
Once you are satisfied with your changes, run
git rebase --continue
各コミットを実行し、それに応じて編集します.git commit --amend --author="Marty McFly <[email protected]>" --no-edit
git rebase --continue
Gitフィルタ分岐スクリプトを使用してすべての履歴を編集します
私はgitを実装しました
filter-branch
コマンドは、インタラクティブなモードで使用することができるカスタムスクリプトに、またはオプションのフラグを介して受動的に.WARNING
This action is destructive to your repository's history. If you're collaborating on a repository with others, it's considered bad practice to rewrite published history.You should only rewrite history if absolutely necessary.
Running this script rewrites history for all repository collaborators. After completing these steps, any person with forks or clones must fetch the rewritten history and rebase any local changes into the rewritten history.
指示
Download the script Gitthubから簡単にアクセス可能な場所に保存します.
アダデヘブン / 変更git著者
正しくない著者情報を解決するために、Gitリポジトリのコミット履歴を更新します。
chmod +x changeauthor.sh
cd path/to/repo
代わりに、どこからでも実行することができます --git-dir
and --work-tree
フラグ.../path/to/changeauthor.sh --old-email [email protected] --new-email [email protected] --name "Marty McFly" --remote origin
実行を許可する権限を変更しない場合は、次のいずれかでスクリプトを呼び出すこともできます.bash ./changeauthor.sh [OPTIONS]...
sh ./changeauthor.sh [OPTIONS]...
スクリプトを実行しないoption flags , 必要な値を対話的にプロンプトを介してプロンプトが表示されます.その後、スクリプトはローカルリポジトリを更新し、指定されたリモートに変更をプッシュします.Gitフィルタの分岐を抑制したい場合は、次の行を追加します
~/.bashrc
コンピュータのファイル:export FILTER_BRANCH_SQUELCH_WARNING=1
あなたがどこからでも呼び出すことができる関数としてスクリプトを設定するのを好むならば、以下の機能をあなたのものに加えてください~/.bashrc
ファイルfunction changegitauthor() {
# Update the path to point to the absolute path of the script on your computer
bash /c/absolute/path/to/change-git-author/changeauthor.sh "$@"
}
スクリプトに直接(オプションとして)フラグを渡すか、対話モードでスクリプトを実行するには何も渡しません.利用可能なオプションのすべては以下のようになります.古いメール
-o
, --old-email
[email protected]
新しいメール
-e
, --new-email
[email protected]
新しい名前
-n
, --new-name
Marty McFly
リモート
-r
, --remote
origin
github
フォース
-f
, --force
値を
--remote
使用時フラグ--force
, デフォルトのリモートorigin
) が使用されます.git dir
-d
, --git-dir
このオプションは
--work-tree
フラグ.作業木
-w
, --work-tree
ヘルプ
-h
, -?
, --help
バージョン
-v
, -V
, --version
Reference
この問題について(Git倉庫のコミット履歴で著者情報を変える方法), 我々は、より多くの情報をここで見つけました https://dev.to/adamdehaven/how-to-change-the-author-information-in-the-commit-history-of-a-git-repository-3k76テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol