# Git 常见问题
# 常见问题
# 合并不同的origin
背景:比如repo1 的origin为www.repo1.com, 但是现在有一个需求是将所以的repo1的代码迁移到www.repo2.com下,通用思路有二: 一:
git remote remove origin
git remote add origin www.repo2.com
二
git set-url origin www.repo2.com
以上的两种方式是可以将git 的origin重置的,但是问题并不再此。当我尝试git pull
代码的时候,git会提示一个错误信息
fatal: refusing to merge unrelated histories
因为两者只见并没有任何的关系。
解决: 强制关联
git pull origin master --allow-unrelated-histories
# Updating forked Github repo
背景:如果从他人的那里fork的一个代码仓库,如果想要获取更新最新的代码,怎么办? 解决:
1.git remote add upstream <url-of-original-repository> //添加fork源的repo 地址
2.git branch //确保你在master分支上
3.git pull --rebase upstream master //更新最新的代码
参考:https://stackoverflow.com/questions/18824956/updating-forked-github-repo-to-match-originals-latest-code-and-commits
# 如何修改某次特定的Git commit message
- git rebase --interactive 'bbc643cd^'
- 将对应要修改的一条的
pick
改为edit
,保存退出 - 使用
git commit --amend
修改git commit message历史 - git rebase --continue
- git log查看是否已经修改成功
- git push -f origin branch
参考: a. https://stackoverflow.com/questions/1186535/how-to-modify-a-specified-commit b. https://blog.csdn.net/zxc024000/article/details/108939049
# how to write a pretty commit
可以参考jquery 的commit规范:
https://github.com/jquery/jquery/commits/master
# 如何删除本地
# 更改git commit历史的username
最近一次:
git commit --amend --author="yxzhou <yxzhou@xx.com>"
历史所有的:
https://help.github.com/en/articles/changing-author-info
#!/bin/sh
git filter-branch --env-filter '
OLD_EMAIL="zhou.yixing@rea-group.com"
CORRECT_NAME="sialvsic"
CORRECT_EMAIL="sialvsic@outlook.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
chmod ./run.sh
./run.sh
git push --force --tags origin 'refs/heads/*'