# 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

  1. git rebase --interactive 'bbc643cd^'
  2. 将对应要修改的一条的 pick 改为 edit,保存退出
  3. 使用git commit --amend 修改git commit message历史
  4. git rebase --continue
  5. git log查看是否已经修改成功
  6. 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/*'

陕ICP备20004732号-3