git のこと備忘録
個人的な git 関連の備忘録です。
コマンドとか
ログの AuthorName とか CommitterEmail とかを変更したいとき
歴史の改変です。
git filter-branch --commit-filter '
if [ ! "$GIT_AUTHOR_NAME" = "●●●●" ];
then
GIT_COMMITTER_NAME="〇〇〇〇";
GIT_AUTHOR_NAME="〇〇〇〇";
GIT_COMMITTER_EMAIL="[email protected]";
GIT_AUTHOR_EMAIL="[email protected]";
git commit-tree "$@";
else
git commit-tree "$@";
fi' HEAD
これは内部ではrebaseとは異なる?動きをしているっぽいので、rebase中にコンフリクトが起きることがないので気持ち的には楽です。
ただし、1コミットづつ実行するので時間がかかります。
ただし、既にリモートへpush済みのブランチに対して変更後のものをpushするのはやばそう。
ログの AuthorDate と CommiterDate を同じにする
2通りの方法があるっぽいです。
1. filter-branch
使う版
上記と同じように filter-branch
使います。
特徴は、コンフリクトは起きないけどそれなりに時間がかかるってことでしょうか。
git filter-branch --env-filter \
'export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"' SHA1..HEAD
2. rebase する版
rebase により実行します。
特徴は、コンフリクトが起きる時があるけど、時間が早いことですかね。
git rebase --committer-date-is-author-date <コミット番号>
ここで、コミット番号を指定すると、そのコミットからHEADに向けて全てが対象となります。
そもそも、時間の変更くらいでコンフリクトが起きることはないのですが、自分の環境ではコンフリクトが起きる場合がありました。そのシチュエーションとは、例えばファイル名を大文字から小文字に変更するなどした場合です。コンフリクトが起きるというか、rebaseがエラーになります。たぶんWindowsが大文字と小文字を区別できないからなのかなとか思ってます。
ログの日付を変える
git commit --amend --date="Tue Jly 10 15:59:59 2018 +0900"
Author And Source
この問題について(git のこと備忘録), 我々は、より多くの情報をここで見つけました https://qiita.com/tassi-yuzukko/items/98ebfa3a49b98aba7b4b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .