轻松玩转Git

news2025/2/26 11:40:55

轻松玩转Git

  • 快速入门
    • 什么是Git
    • 为什么要做版本控制
    • 安装git
  • Git实战
    • 单枪匹马开始干
    • 拓展新功能
    • 小结
  • 紧急修复bug
    • 分支
    • 紧急修复bug方案
    • 命令总结
    • 工作流
  • 上传GitHub
    • 第一天上班前在家上传代码
    • 初次在公司新电脑下载代码
    • 下班回到家继续写代码
    • 到公司继续开发
    • 在公司约妹子忘记提交代码
      • 回家继续写代码
      • 到公司继续写代码
    • 其他
    • 快速解决冲突
    • 小总结
  • 多人协同开发工作流
  • 其他
    • 配置
    • 免密码登录
    • git忽略文件

快速入门

什么是Git

Git是一个分布式的版本控制软件。

  • 软件,类似于QQ、office、dota等安装到电脑上才能使用的工具。
  • 版本控制,类似于毕业论文、写文案、视频剪辑等,需要反复修改和保留原历史数据。
  • 分布式
    • 文件夹拷贝
    • 本地版本控制
    • 集中式版本控制
    • 分布式版本控制

为什么要做版本控制

要保留之前所有的版本,以便回滚和修改。

安装git

详见:https://git-scm.com/book/zh/v2/起步-安装-Git

Git实战

单枪匹马开始干

想要让git对一个目录进行版本控制需要以下步骤:

  • 进入要管理的文件夹

  • 执行初始化命令

    git init
    
  • 查看管理目录下的文件状态

    git status
    
    注:新增的文件和修改过后的文件都是红色
    
  • 管理指定文件(红变绿)

git add 文件名
git add .
  • 个人信息配置:用户名、邮箱 【一次即可】

      git config --global user.email "you@example.com"
      git config --global user.name "Your Name"
    
  • 生成版本

    git commit -m '描述信息'
    
  • 查看版本记录

    git log 
    

    拓展新功能

git add .
git commit -m '短视频'
  • 回滚至之前版本

    git log 
    git reset --hard 版本号
    
  • 回滚至之后版本

    git reflog 
    git reset --hard 版本号
    

    小结

git init 
git add 
git commit 
git log 
git reflog 
git reset --hard 版本号

在这里插入图片描述

紧急修复bug

分支

分支可以给使用者提供多个环境,意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。

  • 查看分支

紧急修复bug方案

在这里插入图片描述

命令总结

  • 查看分支

    git branch
    
  • 创建分支

    git branch 分支名称
    
  • 切换分支

    git checkout 分支名称
    
  • 分支合并(可能产生冲突)

    git merge 要合并的分支
    
    注意:切换分支再合并
    
  • 删除分支

    git branch -d 分支名称
    

    工作流

    在这里插入图片描述

    上传GitHub

    在这里插入图片描述

第一天上班前在家上传代码

首先,需要注册github账号,并创建远程仓库,然后再执行如下命令,将代码上传到github。

在这里插入图片描述

1. 给远程仓库起别名
	git remote add origin 远程仓库地址
2. 向远程推送代码
	git push -u origin 分支

初次在公司新电脑下载代码

1. 克隆远程仓库代码
	git clone 远程仓库地址 (内部已实现git remote add origin 远程仓库地址)
2. 切换分支
	git checkout 分支

在公司下载完代码后,继续开发

1. 切换到dev分支进行开发
	git checkout dev 
2. 把master分支合并到dev [仅一次]
	git merge master
3. 修改代码
4. 提交代码
	git add . 
	git commit -m 'xx'
	git push origin dev 

下班回到家继续写代码

1. 切换到dev分支进行开发
	git checkout dev 
2. 拉代码
	git pull origin dev 
3. 继续开发

4. 提交代码
	git add . 
	git commit -m 'xx'
	git push origin dev 

到公司继续开发

1. 切换到dev分支进行开发
	git checkout dev 
2. 拉最新代码(不必再clone,只需要通过pull获取最新代码即可)
	git pull origin dev 
3. 继续开发

4. 提交代码
	git add . 
	git commit -m 'xx'
	git push origin dev 

开发完毕,要上线

1. 将dev分支合并到master,进行上线
	git checkout master
	git merge dev 
	git push origin master
2. 把dev分支也推送到远程
	git checkout dev
	git merge master 
	git push origin dev 

在公司约妹子忘记提交代码

1. 拉代码
	git pull origin dev 
2. 继续开发

3. 提交代码
	git add . 
	git commit -m 'xx'

注:忘记push了

回家继续写代码

1. 拉代码,发现在公司写的代码忘记提交...
	git pull origin dev 
	
2. 继续开发其他功能
	
3. 把dev分支也推送到远程
	git add . 
	git commit -m 'xx'
	git push origin dev 

到公司继续写代码

1. 拉代码,把晚上在家写的代码拉到本地(有合并、可能产生冲突)
	git pull origin dev 
	
2. 如果有冲突,手动解决冲突
	
3. 继续开发其他功能
	
4. 把dev分支也推送到远程
	git add . 
	git commit -m 'xx'
	git push origin dev 

其他

git pull origin dev
等价于
git fetch origin dev
git merge origin/dev 

在这里插入图片描述

快速解决冲突

  1. 安装beyond compare

  2. 在git中配置

    git config --local merge.tool bc3
    git config --local mergetool.path '/usr/local/bin/bcomp'
    git config --local mergetool.keepBackup false
    
  3. 应用beyond compare 解决冲突

    git mergetool 
    

小总结

  • 添加远程连接(别名)

    git remote add origin 地址
    
  • 推送代码

    git push origin dev 
    
  • 下载代码

    git clone 地址
    
  • 拉取代码

    git pull origin dev 
    等价于
    git fetch origin dev
    git merge origin/dev 
    
  • 保持代码提交整洁(变基)

    git rebase 分支
    
  • 记录图形展示

    git log --graph --pretty=format:"%h %s"
    

多人协同开发工作流

其他

配置

  • 项目配置文件:项目/.git/config

    git config --local user.name '武沛齐'
    git config --local user.email 'wupeiqi@xx.com'
    
  • 全局配置文件: ~/.gitconfig

    git config --global user.name 'wupeiq'
    git config --global user.name 'wupeiqi@xx.com'
    
  • 系统配置文件:/etc/.gitconfig

    git config --system user.name 'wupeiq'
    git config --system user.name 'wupeiqi@xx.com'
    
    注意:需要有root权限
    

应用场景:

git config --local user.name '武沛齐'
git config --local user.email 'wupeiqi@xx.com'

git config --local merge.tool bc3
git config --local mergetool.path '/usr/local/bin/bcomp'
git config --local mergetool.keepBackup false

git remote add origin 地址 ,默认添加在本地配置文件中(--local)

免密码登录

  • URL中体现

    原来的地址:https://github.com/WuPeiqi/dbhot.git
    修改的地址:https://用户名:密码@github.com/WuPeiqi/dbhot.git
    
    git remote add origin https://用户名:密码@github.com/WuPeiqi/dbhot.git
    git push origin master 
    
  • SSH实现

    1. 生成公钥和私钥(默认放在 ~/.ssh目录下,id_rsa.pub公钥、id_rsa私钥)
       ssh-keygen
    2. 拷贝公钥的内容,并设置到github中。
    3. 在git本地中配置ssh地址
    	git remote add origin git@github.com:WuPeiqi/dbhot.git
    	
    4. 以后使用
    	git push origin master 
    

git忽略文件

让Git不再管理当前目录下的某些文件。

*.h
!a.h
files/
*.py[c|a|d]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1477418.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法——滑动窗口之最大连续1的个数、将x减到0的最小操作数、水果成篮

3.最大连续1的个数 题目:. - 力扣(LeetCode) 题目要求的是给定一个二进制数组 nums 和一个整数 k,如果可以翻转最多 k 个 0 ,则返回 数组中连续 1 的最大个数 。 按照题目正面去做,还要替换0,很麻烦 反正我们最后要求的是最长…

算法C++

枚举 1.化段为点 前缀和 eg:给一个数列&#xff0c;算x到y个数的和 #include <iostream> #include <vector> using namespace std;int main() {int n;cin>>n;vector<int> a(n);vector<int> sum(n1,0);for(int i0;i<n;i){scanf…

三种食物轮流吃,睡眠时间又长又香!

睡眠质量一直是人们关注的焦点&#xff0c;而饮食则被认为是影响睡眠的重要因素之一。近年来&#xff0c;有一种食物搭配方法备受瞩目&#xff0c;据说可以让人们的睡眠时间又长又香。这种方法并不复杂&#xff0c;只需要轮流食用三种特定食物&#xff0c;就能有效改善睡眠质量…

好用的AI模型集合

AI-Chat 这个网站提供的AI-Chat 3.5和AI-Chat 4.0聊天机器人&#xff0c;每天都可以免费使用。 不管是学习、工作还是日常生活&#xff0c;都能给我们带来很大的帮助&#xff0c;效率真的可以说是翻倍了。我觉得&#xff0c;如果你想让自己的生活更加高效、更加有序&#xff0…

Groovy - 大数据共享搜索配置

数据共享搜索列中配置了搜索列&#xff0c;相应的数据共享接口中也需要支持根据配置的字段搜索&#xff0c;配置实体时&#xff0c;支持搜索的入参code必须是searchKeys&#xff0c;且接口应该是需要支持分页&#xff08;入参必须是 current、pageSize&#xff09;的。current …

如何利用IP代理高效采集产品数据,打造爆品?

文章目录 一、什么是网络爬虫&#xff1f;二、普通人如何通过网络爬虫赚钱&#xff1f;2.1、心得分享2.2、工具自动化收集信息 三、 动态IP代理3.1、覆盖范围3.2、性价比3.3、教程中心F&Q使用教程 3.4、在网络数据采集中的重要性 四、实战应用案例一&#xff1a;ebay电商【…

树莓派驱动编译

驱动编译前提&#xff1a;驱动代码的编译需要提前编译号的内核 驱动&#xff08;3种实现方法&#xff0c;2条路线&#xff09;_驱动编写三种方法-CSDN博客 驱动的编写_驱动编写-CSDN博客 一、概念 1.1、驱动认识 1、裸机程序中是直接操控硬件的&#xff0c;操作系统…

【论文笔记】Attention Is All You Need

【论文笔记】Attention Is All You Need 文章目录 【论文笔记】Attention Is All You NeedAbstract1 Introduction2 Background补充知识&#xff1a;软注意力 soft attention 和硬注意力 hard attention&#xff1f;补充知识&#xff1a;加法注意力机制和点乘注意力机制Extende…

JavaScript的书写方式

JavaScript的书写方式 目前较为流行的是第二种和第三种&#xff0c;第一种很少见。在第二种和第三种推荐使用第三种&#xff0c;因为在日常开发/工作中&#xff0c;第三种是最为常见的 1.行内式 把JS代码嵌入到html元素内部 示例代码 运行效果 由于JS中字符串常量可以使用单引…

如何让电脑待机而wifi不关的操作方法!!

1、一台电脑如果一天不关机&#xff0c;大约消耗0.3度电。 一般一台电脑的功耗约为250-400W&#xff08;台式机&#xff09;。 一台电脑每月的耗电量&#xff1a;如果是每小时300W每天10小时每月30天90KW&#xff0c;即90千瓦时的电。 这只是保守估计。 2、使用完毕后正常关闭…

微调(Fine-tuning)技术概念

——微调&#xff0c;像化妆&#xff0c;一种“精细化、风格性调整”的人工美颜技能。 微调&#xff08;Fine-tuning&#xff09;是指在深度学习领域中&#xff0c;特别是针对预训练模型的一种训练策略。预先训练好的模型通常是在大规模无标注数据上通过自监督学习得到的&#…

Python股票数据,指数月线涨跌幅回测系统

1.这是我用Python写的&#xff0c;目前无法给大家直接使用exe&#xff0c;因为编译后软件不能正常使用。但是py源码可以先开源&#xff0c;给大家学习一下&#xff0c;里面的代码&#xff0c;都有我的注释&#xff0c;需要你有编程基础就可以看懂&#xff0c;自己可以在这个基础…

nginx(三)实现反向代理客户端 IP透传

正常情况下&#xff0c;客户端去访问代理服务器&#xff0c;然后代理服务器再取访问真实服务器&#xff0c;在真实服务器上&#xff0c;只能显示代理服务器的ip地址&#xff0c;而不显示客户端的ip地址&#xff0c;如果想让客户端的ip地址也能在真实服务端看见&#xff0c;这一…

程序员缺乏经验的 7 种表现!

程序员缺乏经验的 7 种表现&#xff01; 一次性提交大量代码 代码写的很烂 同时开展多项工作 性格傲慢 不能从之前的错误中学到经验 工作时间处理私人事务 盲目追逐技术潮流 知道这些表现&#xff0c;你才能在自己的程序员职业生涯中不犯相同的错误。 软件行业的工作经…

FastAPI框架整理

文章目录 一、Starlette、Pydanatic与FastAPI的关系1.Starlette1.1ASGI框架 2.Pydantic2.1基础教程1.定义接受实体2.请求参数3.可以安装插件辅助数据定义和矫正4.处理校验失败的例子5.模型的属性和方法6.解析文件7.递归模型8.ORM模型&#xff1a;从类实例创建符合ORM对象的模型…

FPGA高端项目:FPGA基于GS2971的SDI视频接收转HDMI输出,提供3套工程源码和技术支持

目录 1、前言免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本方案的SDI图像缩放应用本方案的SDI纯verilog图像缩放视频拼接应用本方案的SDI HLS图像缩放视频拼接应用本方案的SDI视频编码动态字符叠加输出应用本方案的SDI视频编码多路视频融合视频叠加应用本方案的SDI视频…

追踪Jira中项目成本与工时,更符合国人使用习惯——TimeWise工时管理

近日&#xff0c;龙智联合Atlassian举办的DevSecOps研讨会年终专场“趋势展望与实战探讨&#xff1a;如何打好DevOps基础、赋能创新”在上海圆满落幕。龙智Atlassian技术与顾问咨询团队&#xff0c;以及清晖、JamaSoftware、CloudBees等生态伙伴的嘉宾发表了主题演讲&#xff0…

opencv中的rgb转gray的计算方法

转换原理 在opencv中&#xff0c;可以使用cv2.cvtColor函数将rgb图像转换为gray图像。示例代码如下&#xff0c; import cv2img_path "image.jpg" image cv2.imread(img_path) gray_image cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) mean gray_image.mean() pri…

Transformer之Residuals Decoder

The Residuals 我们需要提到的编码器架构中的一个细节是&#xff0c;每个编码器中的每个子层(self-attention,&#xff0c;ffnn)周围都有一个残余连接&#xff0c;然后是 layer-normalization 步骤。 如果我们要可视化向量和与 self attention 相关的 layer-norm 运算&#x…

计算机专业大学四年应该如何规划(Java方向)

计算机专业的学生&#xff0c;如何在大学四年内提高自己的竞争力&#xff0c;毕业之后直接进大厂工作&#xff1f; 以下将从大学四年计算机专业的学习规划、课程设置、能力提升、参考书籍等方面&#xff0c;为同学们提供一些建议和指导。 大一&#xff1a; 主攻技能学习并且达…