Search K
Appearance
Appearance
参考文章 Git 新命令 switch 和 restore。
参考文章 Git 合并多个 commit,保持历史简洁 。
git blame <file>
:查看文件修改git stash 会将所有没有 commit 提交(包含暂存区)的内容保存起来,形成一个栈列表(先进先出)
git stash
:将所有没有 commit 提交的内容保存到栈列表中git stash save <message>
:同上且附上 messagegit stash list
:查看存储栈列表git stash pop
:出栈恢复到工作区git stash apply
或 git stash apply@{0}
:出栈索引第 0 个比如 HEAD 指针之前的第 N 个 commit 需要修改提交的作者和邮箱,就可以通过 rebase 来操作
git rebase -i HEAD~N
会让你对这 N 个 commit 进行操作,将其中需要修改邮箱的节点的 pick
修改为 edit
,保存退出。
此时就开始进行 rebase 的时光回溯状态,开始修改第一个 edit
的 commit,对它进行重新提交操作
git commit --amend \
--author="codenoy <48537416+codenoy@users.noreply.github.com>"
修改并重新--amend 重新 commit ,提交后就可以往下继续 rebase 操作
git rebase --continue
如果此刻还有其它需要 edit
的 commit,就会继续对本次 commit 进行操作,如果没有本次 rebase 就算完成操作了,commit tree 也会变成修改后的状态。
如果是大批量的修改 commit 提交邮箱和用户名,可以使用脚本。
git filter-branch --env-filter '
OLD_EMAIL="48537416+lunode@users.noreply.github.com"
CORRECT_NAME="lunode"
CORRECT_EMAIL="48537416+lunode@users.noreply.github.com"
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
如果出现问题,可能是有内容没有提交,又或者是其它问题,可以添加 -f 参数,强制更新。
git filter-branch -f