2

撤回commit

有时候不小心把敏感信息带上去了,回退之后看不到之前提交的commit

git reset commit_id #想要回退到的那个位置的commit id
git commit -am "重新提交"
git push --force

清空commit

公开仓库乱七八糟的提交记录比较多,索性直接清空master分支的提交记录。

  1. 切换到新的分支

    git checkout --orphan new_branch
  2. 暂存所有文件

    git add .
  3. 提交跟踪过的文件

    git commit -m "init"
  4. 删除master分支

    git branch -D master
  5. 重命名当前分支为master

    git branch -m master
  6. 强制提交到远程master分支

    git push -f origin master

修改已提交的commit中提交者的用户名和邮箱

  1. 打开git bash here 客户端
  2. clone目标仓库test.git并进入

    git clone --bare https://gitee.com/xxxx/test.git #这里替换成自己的git地址
    cd test.git #clone完成后进入
  3. 复制脚本,并修改成自己的信息,粘贴到git bash here客户端中,按enter执行

    #!/bin/sh
    
    git filter-branch --env-filter '
    
    OLD_EMAIL="old@test.com"
    CORRECT_NAME="name"
    CORRECT_EMAIL="new@test.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
  4. 推送到远程仓库

    git push --force --tags origin 'refs/heads/*'
  5. 删除本地缓存的仓库test.git

二毛erma0
52 声望56 粉丝

业余爱好