1、远程拉取分支代码
git clone -b [分支名称] git地址
eg: git clone -b dev https://github.com/Jabo2017/element.git
2、git代理
代理网站 https://gitclone.com/
git clone https://gitclone.com/git地址
eg: git clone https://gitclone.com/github.com/Jabo2017/element.git
3、github上的版本和本地版本冲突的解决方法
hint: Updates were rejected because the tip of your current branch is behind
强制覆盖【不建议】
git push -u origin master -f
允许不相关历史提交,并强制合并【推荐】
git pull origin master --allow-unrelated-histories (该选项可以合并两个独立启动仓库的历史) git push -u origin master
4、创建分支
// 创建分支tem并切换到该分支
git checkout -b tem[分支名称]
// 推送分支到远程
git push origin tem //或者 git push origin tem:tem 【冒号前的tem是推送本地分支,冒号后的tem是远程没有则创建】
5、合并分支
git merge 分支名称
6、删除分支
删除分支前先切到别的分支:
git checkout dev[分支名称]
删除本地分支:
git branch -d tem[分支名称] 【只能删除已经合并、提交的分支】
git branch -D tem[要删除的分支名称] 【强制删除本地分支即使没合并、提交】
删除远程分支:
git push origin --delete tem[要删除的分支名称]
或者
git push origin :tem[要删除的分支名称] // 推送一个空的分支也是删除
7、查看分支
查看本地分支:
git branch
查看远程分支:
git branch -r
查看本地和远程分支:
git branch -a
查看本地各分支最后提交的消息
git branch -v
查看本地那些分支已经合入当前分支
git branch --merged
大家应该已经发现git branch -r 和 -a 列出的远程分支中居然有已经删除的分支,看的很不爽哈哈哈
解决方案:
git remote show origin // 查看远程分支情况
修剪分支
git remote prune origin // 修剪删除的分支
8、bfg修剪git库
1、先删除项目冗余
2、
git clone --mirror git@github.com:username/some-project.git
## 根据经验, 如果是包含大文件的项目, 使用 ssh 将会克隆的非常缓慢, 可以改用 https
git clone --mirror https://github.com/username/some-project.git
## 这个时候, 你的当前目录下就会产生一个名为 some-project.git 的文件夹
3、
## 根据情况的不同, bfg 可选择根据文件大小删除 (单位k、M)
java -jar bfg.jar --strip-blobs-bigger-than 100M some-project.git
## 根据情况的不同, bfg 可选择直接根据名字删除
java -jar bfg.jar --delete-files name-of-file some-project.git
## 根据情况的不同, bfg 可选择文件夹删除
java -jar bfg.jar --delete-folders name-of-folders some-project.git
4、
cd some-project.git
git reflog expire --expire=now --all && git gc --prune=now --aggressive
git push
5、对应服务器上gc
统计
参数说明:
--author 作者 提交者
--after 开始时间
--before 结束时间
--pretty 格式
git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --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 }' -; done
1.查询所有用户的提交总次数
git log --pretty='%aN' | sort | uniq -c | sort -k1 -n -r
根据时间查询次数
git log --after="2022-09-01 00:00:00" --before="2022-09-28 00:00:00" --pretty='%aN' | sort | uniq -c | sort -k1 -n -r
2.gitee统计,各用户提交行数
git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --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 }' -; done
根据时间查询行数
git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --after="2022-09-01 00:00:00" --before="2022-09-28 00:00:00" --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 }' -; done