git笔记


git修改提交作者和邮箱

  • 提交前

    如果代码未提交,则可以

    git config  user.name "Author Name"
    git config  user.email "Author Email"
    
  • 提交后

    如果代码已经提交,或者已经push到remote(只能修改最近一次提交)

    git commit --amend --author="NewAuthor <NewEmail@address.com>"
    

    修改全部commit,需要使用脚本 参考github官方

    #!/bin/sh
    
    git filter-branch --env-filter '
    OLD_EMAIL="your-old-email@example.com"
    CORRECT_NAME="Your Correct Name"
    CORRECT_EMAIL="your-correct-email@example.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
    

    .git同级目录下运行

    sh git.sh
    

    然后使用--force push到远程

合并多个commit历史

git rebase -i commit_id

使用 magit

magit-status
ll
# move to commit id
r-ii

git删除远程分支已经被删除的本地分支

也不知道为什么, google了很久也没找到答案,明明题目已经清楚的问

如何删除远程分支已经被删除的本地分支?

可下面一群人在答

如何删除本地分支已经被删除的远程分支?

瞎答

最后还是只能靠自己

# 先清理远程分支, 即删除本地分支已经被删除的远程分支
git fetch -p
# 找到存在的远程分支
git branch -r | grep -v HEAD | awk -F '/' '{print $2}' > /tmp/test.txt
# 清理本地分支
git branch -a | grep -v '\*' |  egrep -v -f /tmp/test.txt | xargs git branch -d

注意: 不要使用 xargs git branch -D

There are comments.