Git_Tips

Git

安装

# 安装
## Ubuntu
apt-get install git
## CentOS
yum install -y git

# 配置
#--global参数 表示该机器all都使用
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

Github新增ssh

# known_hosts删除github对应的记录(疑难杂症)

# ssh
ssh-keygen -t ed25519 -C 'v@v'

# 目录查看
cd ~/.ssh

# 密钥查看
cat *.pub

# 复制添加到Github
https://github.com/settings/keys
SSH keys -> New SSH key

强制覆盖本地

git fetch --all &&  git reset --hard origin/master && git pull

删除Git凭据

# Windows
## 凭据管理器-删除Windows凭据
control keymgr.dll

常用操作

#克隆项目
git clone https://github.com/medcl/elasticsearch-analysis-ik

#恢复本地错误操作
git reflog
git reset --hard HEAD@{1}

#检出
git checkout    

#添加所有未包含文件
git add *

#提交本地
git commit -am ""

#拉代码
git pull --rebase

#推送远程仓库
git push

分支操作

## 
#查看本地分支
git branch

#查看远程分支
git branch -r

#查看所有分支
git branch -a
#本地创建新的分支
git branch [branch name]
# ex
git branch develop
# 切换到新的分支
git checkout [branch name]
# ex
git checkout develop
# 创建同时切换分支
git checkout -b [branch name]
# 等同于
git branch [branch name]
git checkout [branch name]
# 将新分支推送远程仓库
git push origin [branch name]
# ex
git push origin develop:develop
# 拉取远程的develop分支
git fetch origin develop

# 本地创建分支dev并切换到该分支
git checkout -b develop origin/develop
#删除本地分支
git branch -d [branch name]
#删除远程分支
git push origin :[branch name]
# 撤销已push到远端的commit
# 使用 --hard 参数会抛弃当前工作区的修改
# 使用 --soft 参数的话会回退到之前的版本,但是保留当前工作区的修改,可以重新提交
git reset --hard <版本号>

#覆盖掉远端的版本信息,使远端的仓库也回退到相应的版本,需要加上参数--force
git push origin master --force

远程操作

#列出所有远程主机
git remote

#列出所有远程主机以及网址
git remote -v

# 查看该主机的详细信息。
git remote show <主机名>

# 添加远程主机
git remote add <主机名> <网址>

# 删除远程主机
git remote rm <主机名>

# 远程主机的改名
git remote rename <原主机名> <新主机名>

日志操作

# 统计某一时间段内每个人的代码量(修改时间)
 git log  --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --pretty=tformat:  --since ==2021-10-1 --until=2021-11-30 --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上的个人代码量(修改用户名)
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 }' -

# 查看仓库提交者排名前3
git log --pretty='%aN' | sort | uniq -c | sort -k1 -n -r | head -n 3

# 贡献值统计
git log --pretty='%aN' | sort -u | wc -l

# 提交数统计
git log --oneline | wc -l

# 用户所有提交次数排名(包括提交次数)
git log --pretty='%aN' | sort | uniq -c | sort -k1 -n -r

# 时间段内某用户的提交数(修改用户名)
git log --author=username --since="2021-08-01" --no-merges | grep -e 'commit [a-zA-Z0-9]*' | wc -l

标签操作

# 列出已有的标签
git tag
git tag -l 'v0.0.*'

# 创建标签
git tag -a v0.0.1 -m "first version"

# 查看标签信息与对应的提交信息
git show v0.0.1

# 推送远程仓库标签
git push origin v0.0.1
git push origin --tags

# 后期打标签,在命令的末尾指定提交的校验和(或部分校验和)
git log --pretty=oneline
git tag -a v1.2 9fceb02

# 删除标签
git tag -d v0.0.1
git push origin :refs/tags/v0.0.1

# 检出标签
git checkout v0.0.2
# 注意:如果你做了某些更改然后提交它们,标签不会发生变化,但你的新提交将不属于任何分支,并且将无法访问,除非确切的提交哈希。因此,如果你需要进行更改——比如说你正在修复旧版本的错误——这通常需要创建一个新分支

Tips

克隆某分支

git clone -b ace https://git.com/test/test.git

强制推送分支到master

# 将develop分支强制推送合并至master
git push origin develop:master -f

跟踪空文件夹

# Git不跟踪空文件夹,添加.gitkeep文件
touch .gitkeep

推送多个仓库

方法1

# 查看远程仓库地址
git remote -v

# 添加远程仓库
git remote set-url --add origin https://github.com/****s.git

方法2

# 直接更改.git/config配置文件
[remote "origin"]
    url = https://****admin.git
    fetch = +refs/heads/*:refs/remotes/github/*
    url = https://****admin.git

分支迁移

# 创建
git remote add origin2 master

# 设置远程地址
## ssh
git remote set-url origin2 git@*****.git

## http
git remote set-url origin2 https://*****

# 推送
git push origin2

# 移除多余远程
git remote rm origin2 

GitHub

git remote add origin https://****.git
# 建立关联
##                                  远程分支名字 本地分支名字
git branch --set-upstream-to=origin/master master

# 查看关联
git branch -vv

# 分支上有东西先pull
git pull --rebase

# 推送
git push

Q&A

  • The authenticity of host ‘github.com (192.30.255.112)’ can’t be established

少了一个known_hosts文件,本来密钥文件应该是三个,现在是两个,便报了这样的错误,此时选择yes回车之后,便可,同时生成了缺少了的known_hosts文件:

Are you sure you want to continue connecting (yes/no)? 
//输入yes,回车
  • error:failed to push some refs to

在github版本库进行在线修改,或直接在github上的某个库中添加readme文件或者其他什么文件,但是没有对本地库进行同步。这时当你再次有commit想要从本地库提交到远程的github库中时就会出现push失败的问题。

# 远程库同步到本地库
git pull --rebase origin master
  • error: GH007: Your push would publish a private email address.

由于设置了邮箱为隐私邮箱,有两种解决方式:
在GITHUB上setting-Emails-Keep my email addredd private去掉勾选。
或者命令行中配置邮箱为username@users.noreply.github.com
git config --global user.email ‘username@users.noreply.github.com’

  • Filename too long

git config --system core.longpaths true

emoji指南

emojiemoji 代码commit 说明
🎉 (庆祝):tada:初次提交
🆕 (全新):new:引入新功能
🔖 (书签):bookmark:发行/版本标签
🐛 (bug):bug:修复 bug
🚑 (急救车):ambulance:重要补丁
🌐 (地球):globe_with_meridians:国际化与本地化
💄 (口红):lipstick:更新 UI 和样式文件
🎬 (场记板):clapper:更新演示/示例
🚨 (警车灯):rotating_light:移除 linter 警告
🔧 (扳手):wrench:修改配置文件
➕ (加号):heavy_plus_sign:增加一个依赖
➖ (减号):heavy_minus_sign:减少一个依赖
⬆️ (上升箭头):arrow_up:升级依赖
⬇️ (下降箭头):arrow_down:降级依赖
⚡️ (闪电)
🐎 (赛马)
:zap:
:racehorse:
提升性能
📈 (上升趋势图):chart_with_upwards_trend:添加分析或跟踪代码
🚀 (火箭):rocket:部署功能
✅ (白色复选框):white_check_mark:增加测试
📝 (备忘录):memo:撰写文档
🔨 (锤子):hammer:重大重构
🎨 (调色板):art:改进代码结构/代码格式
🔥 (火焰):fire:移除代码或文件
✏️ (铅笔):pencil2:修复 typo
🚧 (施工):construction:工作进行中
🗑 (垃圾桶):wastebasket:废弃或删除
♿️ (轮椅):wheelchair:可访问性
👷 (工人):construction_worker:添加 CI 构建系统
💚 (绿心):green_heart:修复 CI 构建问题
🔒 (锁):lock:修复安全问题
🐳 (鲸鱼):whale:Docker 相关工作
🍎 (苹果):apple:修复 macOS 下的问题
🐧 (企鹅):penguin:修复 Linux 下的问题
🏁 (旗帜):checkered_flag:修复 Windows 下的问题
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值