Git清空提交记录&撤回commit&修改已提交的commit中提交者的用户名和邮箱&存在冲突时同步上游仓库更新
撤回commit
有时候不小心把敏感信息带上去了,回退之后看不到之前提交的commit
git reset commit_id #想要回退到的那个位置的commit id
git commit -am "重新提交"
git push --force
清空commit
公开仓库乱七八糟的提交记录比较多,索性直接清空master分支的提交记录。
- 切换到新的分支
git checkout --orphan new_branch
- 暂存所有文件
git add .
- 提交跟踪过的文件
git commit -m "init"
- 删除master分支
git branch -D master
- 重命名当前分支为master
git branch -m master
- 强制提交到远程master分支
git push -f origin master
修改已提交的commit中提交者的用户名和邮箱
- 打开
git bash here
客户端 - clone目标仓库
test.git
并进入
git clone --bare https://gitee.com/xxxx/test.git #这里替换成自己的git地址
cd test.git #clone完成后进入
- 复制脚本,并修改成自己的信息,粘贴到
git bash here
客户端中,按enter执行
#!/bin/sh
git filter-branch --env-filter '
OLD_EMAIL="[email protected]"
CORRECT_NAME="name"
CORRECT_EMAIL="[email protected]"
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 push --force --tags origin 'refs/heads/*'
- 删除本地缓存的仓库
test.git
存在冲突时同步上游仓库更新
- 添加上游仓库 upstream
前提是已经fork上游仓库,且本地clone了自己的仓库
git remote -v # 列出当前的 remote 情况
git remote add upstream https://github.com/*.git
- 同步上游仓库代码
git fetch upstream
- 合并代码,手动处理冲突时选择保留本地版本
git merge upstream/main
- 推送到自己的仓库
git push origin main