git使用笔记


Git清空提交记录&撤回commit&修改已提交的commit中提交者的用户名和邮箱&存在冲突时同步上游仓库更新

撤回commit

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

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

清空commit

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

  1. 切换到新的分支
git checkout --orphan new_branch
  1. 暂存所有文件
git add .
  1. 提交跟踪过的文件
git commit -m "init"
  1. 删除master分支
git branch -D master
  1. 重命名当前分支为master
git branch -m master
  1. 强制提交到远程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完成后进入
  1. 复制脚本,并修改成自己的信息,粘贴到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
  1. 推送到远程仓库
git push --force --tags origin 'refs/heads/*'
  1. 删除本地缓存的仓库test.git

存在冲突时同步上游仓库更新

  1. 添加上游仓库 upstream
    前提是已经fork上游仓库,且本地clone了自己的仓库
git remote -v  # 列出当前的 remote 情况
git remote add upstream https://github.com/*.git
  1. 同步上游仓库代码
git fetch upstream
  1. 合并代码,手动处理冲突时选择保留本地版本
git merge upstream/main
  1. 推送到自己的仓库
git push origin main

文章作者: 二毛erma0
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 二毛erma0 !
  目录