Git实际问题
Rehoni / 2019-10-11
查看和修改当前project的用户名、密码
git config user.name & user.email
本地已创建分支dev,要推送到远程分支
在远程分支中创建一个dev,利用 git push origin dev:dev
推送到远程,这样有一个坏处,如果未设置:one:中的user,则会以本地计算机或global中的信息推送过去。
故可以考虑commit之后直接push,git会提醒你push没有上游,采用git branch -u origin/dev
来设置本地dev的上游为远程的origin/dev。
合并分支到master上
https://blog.csdn.net/boysky0015/article/details/78185879
关于记住密码、多项目不同用户
git config credential.helper store
TODO: 多项目不同用户
Changing the Git history of your repository using a script
-
打开Git bash
-
创建存储库的全新裸克隆
git clone --bare https://github.com/user/repo.git cd repo.git
-
复制粘贴脚本,替换变量
- OLD_EMAIL
- CORRECT_NAME
- CORRECT_EMAIL
#!/bin/sh git filter-branch --env-filter ' OLD_EMAIL="your-old-email@example.com" CORRECT_NAME="Your Correct Name" CORRECT_EMAIL="your-correct-email@example.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
-
执行脚本
-
查看新的Git历史记录是否有错误。
-
将更正的历史记录推送到GitHub:
git push --force --tags origin 'refs/heads/*'
-
清理临时克隆
cd .. rm -rf repo.git
拉取远程分支代码
git clone
了master
分支的代码下来,但是需要拉取其他远程分支的代码,采用git branch -r
查看远程分支列表,如想要拉取,则可以通过git branch -t origin/dev
或者git checkout -b dev origin/dev
拉取同远程分支名同名的分支到本地。
合并仓库并且保留commit log message记录
- 将repo1作为远程仓库,添加到repo2中,设置别名为other
- 从repo1仓库中抓取数据到本仓库
- 将repo1仓库中抓取的master分支作为新分支checkout到本地,新分支命名为repo1
- 切换为repo2的master分支
- 将repo1合并入master分支
注意:产生的文件冲突需要解决提交后才能merge,merge时需要添加参数--allow-unrelated-histories
git remote add other ../repo1/
git fetch other
git checkout -b repo1 other/master
git checkout master
git merge repo1 --allow-unrelated-histories
递归子模块
https://www.cnblogs.com/hexiaobao/p/8134829.html
https://www.dokyme.cn/index.php/2017/09/04/git/
分支的创建和合并 (十分详细)
https://www.dokyme.cn/index.php/2017/09/07/git-2/
取消一个目录的git化
rm -rf .git
将git分支branch合并到主干master上https://blog.csdn.net/sinat_39150454/article/details/77816179
修改git的config配置http://daemon369.github.io/git/2015/03/11/setting-email-in-git
Git bash配置代理
同一个 Github 账号之多台电脑间协同开发
https://blog.csdn.net/u013477973/article/details/80820882
Git bash快捷键
https://blog.csdn.net/xianghongai/article/details/79029357
Git变基操作
https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%8F%98%E5%9F%BA
统计git提交次数+区域时间内提交次数+提交行数
统计git提交次数: 所有人的所有提交次数,会展示所有的提交人 提交次数详情。
git log | grep "^Author: " | awk '{print $2}' | sort | uniq -c | sort -k1,1nr
统计时间内提交次数。
git log --author=yourname --since="2017-08-01" --no-merges | grep -e 'commit [a-zA-Z0-9]*' | wc -l
统计提交行数:根据1展示出详情,可以填入username。将展示该用户增加行数,删减行数,剩余行数。
git log --author="username" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add, subs, loc }' -