Table of Contents
常见问题
配置大小写敏感
全局配置
git config --global core.ignorecase false
临时生效
git mv --force dockerfile Dockerfile
git修改提交作者和邮箱
-
提交前 如果代码未提交,则可以
git config user.name "Author Name" git config user.email "Author Email"
-
提交后 如果代码已经提交,或者已经push到remote(只能修改最近一次提交)
git commit --amend --author="NewAuthor <[email protected]>"
修改全部commit,需要使用脚本 参考github官方
#!/bin/sh git filter-branch --env-filter ' OLD_EMAIL="[email protected]" CORRECT_NAME="Your Correct 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同级目录下运行
sh git.sh
然后使用
--force
push到远程
合并多个commit历史
git rebase -i commit_id
使用 magit
magit-status ll # move to commit id r-ii
git删除远程分支已经被删除的本地分支
也不知道为什么, google了很久也没找到答案,明明题目已经清楚的问
如何删除远程分支已经被删除的本地分支?
可下面一群人在答
如何删除本地分支已经被删除的远程分支?
瞎答
最后还是只能靠自己
# 先清理远程分支, 即删除本地分支已经被删除的远程分支 git fetch -p # 找到存在的远程分支 git branch -r | grep -v HEAD | awk -F '/' '{print $2}' > /tmp/test.txt # 清理本地分支 git branch -a | grep -v '\*' | egrep -v -f /tmp/test.txt | xargs git branch -d
注意: 不要使用 xargs git branch -D
合并pull request
git fetch origin pull/3/head:pr git checkou pr
fork版本保持与上游一致
https://github.com/selfteaching/the-craft-of-selfteaching/issues/67
git remote -v git remote add upstream 上游仓库url(git@...) git fetch upstream git rebase upstream/master # 可能会提示:首先,回退头指针以便在其上重放您的工作... git reset upstream/master --hard
镜像站
git config --global url.https://github.com.cnpmjs.org/.insteadof https://github.com/
报错
error: pathspec 'py3' did not match any file(s) known to git.
# git checkout py3 error: pathspec 'py3' did not match any file(s) known to git. # git branch -a * master remotes/origin/HEAD -> origin/master remotes/origin/master
-
解决方式
# git config --get remote.origin.fetch +refs/heads/master:refs/remotes/origin/master # git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*" # git config --get remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
然后重新
git fetch
即可