当前位置: 首页 > java >正文

迅速掌握Git通用指令

速通Git

  • Git 操作相关内容
    • 初始化仓库
    • 配置本地仓库 name 和 email
    • 查看提交日志
    • 查看仓库状态与差异
    • 版本回退
    • 删除文件
    • 分支管理
    • 分布式版本控制器理解
    • 远程仓库操作
    • .gitignore配置
    • git命令起别名
    • 标签管理
    • 多人协作开发
    • 实战多人合作

Git 操作相关内容

初始化仓库

mkdir test
cd test
git init

配置本地仓库 name 和 email

你的 gitee 上@后面的就是你的 name,email 就不说了

git config user.name ""git config user.email ""git config -l
git config --unset user.namegit config --global user.name ""git config --global user.name ""git config  --global --unset user.name

查看提交日志

git log | git log --pretty=oneline

head -> master master在./git/refs/heads/master
cat ./git/refs/heads/master ->最新的一次commit id ==object的文件名+目录下的一串数字摘要

git cat-file -p commitid

示例:

yusei@hcss-ecs-d74b:~/linux-for-backend-servers-100-production-proven-rules$ git log --pretty=oneline 
478fe2721e016c145229d670338eb7c1ed7ba24e (HEAD -> master, origin/master, origin/HEAD) 自定义协议网络计算器
6385632a142db57e027b53e622daa866700f794e TCPServer 回调处理命令
56db612ef8a8a7ed84319b288c90eeafbaff2ae1 路由转发服务器
9a10abcf3ac0bc4d678be407cb70f4129a739eb0 Udpserver echo服务器
e0f53844287c421acfbfa278163632512b1674bb 单例模式线程池
667eb2ece4323887c3b0f134bac6982d113a77f7 环形队列的生产消费者模型
16c3327cee3cba58a479daaae030e9192137ddb2 封装条件变量改写阻塞队列
226ae8863ccd2c6947d4b8e3608496af983eee6e 阻塞队列
53b3dbd35674d6881498e87b13c8f5f39b99edce 线程接口认识
900d04f8315fe2e6fba30f7859ab368d177abee5 共享内存
da6012a315f47ab3db002e7aea633e02557e6658 命名管道
43abe095df1adcde3c78e8c06c0b58c58a4d4da9 一个简单的进程池代码
4fcd384d33745be8d8f354cf43554bdfa21a0055 终端也是文件
9fe94090813906c56cfdcd8e312ed439857527c4 Initial commit
yusei@hcss-ecs-d74b:~/linux-for-backend-servers-100-production-proven-rules$ git cat-file -p 478fe2721e016c145229d670338eb7c1ed7ba24etree d334c8ac29abaa4f2211fbf759dc11a2b8bc85c1
parent 6385632a142db57e027b53e622daa866700f794e //上一个结点
author Yusei <1466576565@qq.com> 1753735612 +0800
committer Yusei <1466576565@qq.com> 1753735612 +0800

tree目录的数字摘要

查看仓库状态与差异

git status 查看仓库状态
git diff file查看暂存区和工作区的区别 -1,+1,2

版本回退

git reset 回退版本库的内容

git log 存储每个版本的数字摘要

git reset回退后,log会被重置

此时如何撤销操作呢,通过git reflog 记录本地的每一次提交指令

git reset 通过git reflog中的数字摘要

版本回退的本质是指针操作实际上是将HEAD指针->master的指向修改

git checkout -- file //工作区代码回退git reset 最新的commit id

撤销的本质目的是不影响远端仓库

删除文件

git rm file 删除暂存区和工作区的文件
git commit -m 之后删除版本库的内容

分支管理

主分支就是master分支
HEAD可以指向别的分支,HEAD指向的分支就是当前工作分支

git branch 查看当前所有分支
git branch branchname 创建分支
git branch -b branchname 创建新分支并且切换 
git checkout branchname 切换工作分支
git merge branchname 合并分支

fast-farword 直接将master的指向给为merge的最新提交

git branch -d branchname  删除分支(不能在当前分支删除当前分支)

合并但是有冲突后,打开冲突文件
HEAD到===是当前工作分支冲突内容,===到dev是要合并的分支冲突内容

<<<<HEAD=====>>>>>dev

将这个文件要保留的内容保留其他删除就行就可以合并了

git log --graph --abbrev-commit 查看多版本下的分支图
git merge --no--ff -m "merge dev2" dev2 不适用fast-forword模式,因为是新的提交必须得带-m提交信息

提交内容还是和fast-forword模式一样但是会多一个-m信息

切换分支工作区的代码,当切换到主分支时能在工作区看到因此在分支通过git stash命令可以可以再./git/refer新建一个stash目录
第一次新建的文件不能被添加到stash中
切换到分支恢复

git stash pop;//将stash区的内容恢复到分支

产生冲突应该在分支上不应该在主分支,应该分支合并主分支而不是主分支合并分支,然后主分支再合并分支

只有完成了 git add 和 git commit的分支才可以通过git branch -d删除
否则git 会保护我们的分支

场景如果一个功能在工作区开发了好几天突然被取消
应该使用git merge -D

分布式版本控制器理解

github是一个中央服务器,多个本机推送仓库到github,多个主机拉取仓库到github,多个主机有同样的仓库,分布式!!

远程仓库操作

git clone 远程仓库地址

远端仓库名字,通过git remote获取,一般叫:origin

git remote -v 查看是否具有push和fetch权限

git clone通过ssh协议,要将本地的公钥添加到远端仓库(gitee上)

git push是本地分支和远端分支的交互

issues:

git push(如果本地分支名与远端分支同名可以省略否则增加origin master)

git clone的时候就建立了本地分支与远端分支的联系

远端仓库比本地仓库新时 git pull拉取加合并

.gitignore配置

vim .gitignore不想追逐的文件
*.so
*.ini 

忽略so和ini为后缀的文件

git add -f b.so强制添加忽略文件

或者添加!b.so忽略.so结尾的文件但不忽略*.so

git check-ignore -v c.so 查看c.so为什么被忽略

git命令起别名

git config --global alias.st status

此时git st==git status

标签管理

git tag 查看所有标签
git tag 标签名 创建标签实则是在refs创建tags
git tag -a v0.8 -m "描述标签信息"

eg: git tag v1.0 对最新一次提交的commit id起别名

git show 标签名 查看标签详细信息,git tag只显示标签git push origin v1.0 将标签推送到远端
git push origin --tags 推送所有标签git tag -d v1.0删除标签
git push origin :v1.0
git branch -a 查看所有分支包括远端分支,git不支持本地切换到远端分支(本来也不应该)git checkout -b dev origin/dev 远端分支和本地分支建立联系git branch --vv 也可以查看联系

多人协作开发

两种方式:

  1. 本地master推送到远端master
    本地分支与远端分支建立联系,包括主分支和dev分支
    push之前首先git pull拉取到最新仓库内容(可能已经有人提交过代码到远端分支上了)
    在分支上合并远端拉取下来的本地主分支,本地主分支合并
    再git push推送到远端仓库的主分支

  2. 远端合并到主分支
    本地分支与远端分支建立联系,包括主分支和dev分支
    push之前首先git pull拉取到最新仓库内容(可能已经有人提交过代码到远端分支上了)
    在分支上合并远端拉取下来的本地主分支
    分支git push推送到远端仓库的分支
    走Pull Request由管理员将主分支合并分支

实战多人合作

是远程master分支新增两个分支,两个分支分别新增新增function 1和function 2分别给开发者1和2
每个功能私有一个分支

本地或远端新建两个分支
本地 git checkout -b branchname新建分支并且切换分支
然后 git push origin

本地解决冲突 远端只进行合并

远端删除分支后,本地仍然会保留远端的分支

git remote show origin 显示远端分支,会包含是否stale(是否陈旧)
git remote prune
http://www.xdnf.cn/news/18087.html

相关文章:

  • C++内存模型
  • 数据结构代码分享-1 顺序表
  • Redis面试精讲 Day 23:Redis与数据库数据一致性保障
  • Python 设计模式详解 —— 掌握软件设计的通用解决方案
  • 常用的SQL语句
  • ReactNode 类型
  • Java学习笔记:IDEA简单使用技巧
  • 使用vscode的task.json来自动执行make命令,而不直接使用终端
  • Eclipse Tomcat Configuration
  • 基于Python的旅游推荐系统 Python+Django+Vue.js
  • 【抽象类和接口】
  • Javascript面试题及详细答案150道之(106-120)
  • HAL-USART配置
  • 数据电台询价的询价要求
  • 计算机毕业设计java的小天鹅酒店月子会所管理小天鹅酒店母婴护理中心管理系统设计小天鹅酒店产后护理会所信息化管理平台
  • 利用pyxlsbwriter包实现写入xlsb和xlsx格式及读取效率的比较
  • Forward Propagation|前向传播
  • Python可视化工具-Bokeh:动态显示数据
  • 功能强大!开源免费的视频翻译、音视频转录工具
  • 深度解析 Tomcat ProtocolHandler 工作原理
  • 牛客周赛 Round 104(小红的矩阵不动点/小红的不动点权值)
  • 【AI智能体】Dify 搭建发票识别助手操作实战详解
  • 深入理解QFlags:Qt中的位标志管理工具
  • 【URP】[法线贴图]为什么主要是蓝色的?
  • PowerPoint和WPS演示让多个对象通过动画同时出现
  • LeetCode 刷题【44. 通配符匹配】
  • 【杂谈】-以质代量:谷歌主动学习范式重构AI训练逻辑
  • 朝花夕拾(四) --------python中的os库全指南
  • 【k8s】Kubernetes核心概念与架构详解
  • 向量数据库