面对的场景:现在有三个仓库,一个是本地的仓库1,第二个是和仓库1关联的在github上的仓库2,第三个是把仓库1拷贝到一个无网络环境中持续开发一段时间的仓库3.
分析
基本想法是把仓库3作为仓库1的远程仓库,然后在仓库1上pull。
但是添加远程仓库的时候报错了。
再一想能不能直接pull这个仓库3呢?
不能合并两个没有关联仓库。
加上–allow-unrelated-histories就可以了,合并之前先开了一个新的分支,在新分支上合并
下面就是解决冲突了。
最后的结果就是下面这样了
如果想要修改另外分支提交的用户名和邮箱,可以参考下面的链接。
git重写历史
git bash中输入下面的内容,把author 和 committer都改掉
git filter-branch --env-filter '
OLD_EMAIL="xxx@yyy.com"
CORRECT_NAME="wu ming"
CORRECT_EMAIL="hello@hello.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