Git_Tips

2024-08-26 18:48
文章标签 git tips

本文主要是介绍Git_Tips,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • Git
    • 安装
    • Github新增ssh
    • 强制覆盖本地
    • 删除Git凭据
    • 常用操作
    • 分支操作
    • 远程操作
    • 日志操作
    • 标签操作
    • Tips
      • 克隆某分支
      • 强制推送分支到master
      • 跟踪空文件夹
      • 推送多个仓库
      • 分支迁移
      • GitHub
    • Q&A
      • The authenticity of host 'github.com (192.30.255.112)' can't be established
      • error:failed to push some refs to
      • error: GH007: Your push would publish a private email address.
      • Filename too long
    • emoji指南

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.gitfetch = +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 下的问题

这篇关于Git_Tips的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1109389

相关文章

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

git ssh key相关

step1、进入.ssh文件夹   (windows下 下载git客户端)   cd ~/.ssh(windows mkdir ~/.ssh) step2、配置name和email git config --global user.name "你的名称"git config --global user.email "你的邮箱" step3、生成key ssh-keygen

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi

取得 Git 仓库 —— Git 学习笔记 04

取得 Git 仓库 —— Git 学习笔记 04 我认为, Git 的学习分为两大块:一是工作区、索引、本地版本库之间的交互;二是本地版本库和远程版本库之间的交互。第一块是基础,第二块是难点。 下面,我们就围绕着第一部分内容来学习,先不考虑远程仓库,只考虑本地仓库。 怎样取得项目的 Git 仓库? 有两种取得 Git 项目仓库的方法。第一种是在本地创建一个新的仓库,第二种是把其他地方的某个

Git 的特点—— Git 学习笔记 02

文章目录 Git 简史Git 的特点直接记录快照,而非差异比较近乎所有操作都是本地执行保证完整性一般只添加数据 参考资料 Git 简史 众所周知,Linux 内核开源项目有着为数众多的参与者。这么多人在世界各地为 Linux 编写代码,那Linux 的代码是如何管理的呢?事实是在 2002 年以前,世界各地的开发者把源代码通过 diff 的方式发给 Linus,然后由 Linus

集中式版本控制与分布式版本控制——Git 学习笔记01

什么是版本控制 如果你用 Microsoft Word 写过东西,那你八成会有这样的经历: 想删除一段文字,又怕将来这段文字有用,怎么办呢?有一个办法,先把当前文件“另存为”一个文件,然后继续改,改到某个程度,再“另存为”一个文件。就这样改着、存着……最后你的 Word 文档变成了这样: 过了几天,你想找回被删除的文字,但是已经记不清保存在哪个文件了,只能挨个去找。真麻烦,眼睛都花了。看

如何删除不小心上传到git远程仓库中的.idea .iml文件

如果在开始的时候不配置,gitignore文件或者文件配置不正确,初始化上传的时候就会有一些不必要的信息上传上去 如果已经存在了一些文件在git远程仓库中,如。idea,.iml文件等。 首先在项目中定义一个  .gitignore文件,简单的实例如下也可以用idea中的gitignore插件 .DS_Storeclasses/*.settings/target/.classpath

Unity协程搭配队列开发Tips弹窗模块

概述 在Unity游戏开发过程中,提示系统是提升用户体验的重要组成部分。一个设计良好的提示窗口不仅能及时传达信息给玩家,还应当做到不干扰游戏流程。本文将探讨如何使用Unity的协程(Coroutine)配合队列(Queue)数据结构来构建一个高效且可扩展的Tips弹窗模块。 技术模块介绍 1. Unity协程(Coroutines) 协程是Unity中的一种特殊函数类型,允许异步操作的实现