经常更换/迁移开发环境,有时git的一些细节配置会对开发造成影响。这里记录下开发过程中遇到的一些问题或者小Tips。
(文章持续更新…)
忽略大小写敏感
经常会在IDE(Android Studio)遇到修改不了 大写命名的文件 名称,可配置git使文件名对大小写敏感。
git config core.ignorecase false
请确认工程的使用者
在不同pc上可能存在全局Git配置,在 git clone下项目之后最好通过
git config user.name
是否是当前正确的用户在操作工程项目。
动态更改 http/https 代理
1 | git config --global http.proxy xxxxx |
处理Github没有记录Contributions
在别人的PC上 git clone 自己项目进行膝盖,发现push之后看不到自己的 Contributions。后来发现该 commits 不符合条件,原因是 commits 使用的email账户与项目对应的Github账号不一致。
排查问题
使用 git log 查本地提交记录发现,commit 记录的邮箱不是对应我项目的账号邮箱。
修改repo的Git记录
在本地拉全新的临时项目: git clone yourRepo
创建一个修改脚本: touch modify_repo.sh
写入以下脚本信息,并替换内容.
git filter-branch –env-filter ‘
OLD_EMAIL= <旧的Email地址>
CORRECT_NAME= <正确的用户名>
CORRECT_EMAIL= <正确的邮件地址>
if [ “$GIT_COMMITTER_EMAIL” = “$OLD_EMAIL” ]
thenexport GIT_COMMITTER_NAME="$CORRECT_NAME" export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ “$GIT_AUTHOR_EMAIL” = “$OLD_EMAIL” ]
thenexport GIT_AUTHOR_NAME="$CORRECT_NAME" export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
‘ –tag-name-filter cat – –branches –tags运行脚本修改记录: ./modify_repo.sh //或 bash modify_repo.sh
查看修改后的Git记录,并推送到远端仓库
1
2git log
git push --force --tags origin 'refs/heads/*'
删除临时项目
1
2
cd ../
rm -rf <git repo>
如何把已提交的commit放到另一个分支
如果在分支A中 commit 了记录 A , 然后切换到分支 B 中,可使用 cherry-pick
指令迁移 commit 记录 。
根据 git 文档记录 “Apply the changes introduced by some existing commits”, 即修改已经存在的 commit 记录 。 使用以下指令处理 :
1 | git cherry-pick <commit id> |
用例说明 :
1 | git checkout a |
tag对发版分支的应用
1 | git tag -a v1.7.0 -m "备注信息" |
更改本地和远端分支名
1 | git branch -m old_branch new_branch # Rename branch locally |
重新关联远端分支
1 | git remote rm origin 可以删除关联 |
push/pull的默认行为
1 | 如果 checkout 远端分支 出一个新分支,则新分支的 merge 就会指向远端分支 |
修复 bug 流程
修复bug的时候,可以用stash保存当前开发分支的状态,然后切换到
使用 git reset -hard 来恢复错误操作
通过 git log
查看提交的信息,我们 git reset –hard git log
可能发现会丢失一些提交,使用 reflog 可以找回这些丢失的东西。 通过 git reflog
重新获取所有 HEAD 历史信息,再重新 git reset –hard
善用 git stash 来管理保存进度
当有紧急的内容需要修改时,新功能可能还开发未完成,使用 git stash
保存当前进度。 git stash list
可以查看进度列表, git statsh pop
可以恢复同时删除该进度。 git stash drop <id>
丢掉一个进度, git stash clear
清除所有进度。
更新记录
2018/03/02 新增修改 repo 的 Git 记录
2018/05/24 新增把已提交的 commit 放到另一分支
2018/07/21 新增 bug 修复流程
2019/06/19 更新一波操作
2019/08/21 更新一波操作